Метод view
Метод view класса MailMessage позволяет указать собственный шаблон для письма вместо использования стандартного оформления. Первым параметром передаётся имя шаблона, вторым - массив данных для передачи в шаблон. Если данные не переданы, используется пустой массив.
Синтаксис
<?php
MailMessage::view($view, $data);
?>
Пример
Создадим простое уведомление для пользователя о регистрации:
<?php
namespace AppNotifications;
use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateNotificationsMessagesMailMessage;
class RegistrationNotification extends Notification
{
use Queueable;
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->view('emails.registration', [
'name' => $notifiable->name,
'email' => $notifiable->email
]);
}
}
?>
Шаблон письма:
<!DOCTYPE html>
<html>
<head>
<title>Registration</title>
</head>
<body>
<h1>Welcome, {{ $name }}!</h1>
<p>Your email: {{ $email }}</p>
<p>Thank you for registration.</p>
</body>
</html>
Результат выполнения кода:
Welcome, John!
Your email: john@example.com
Thank you for registration.
Пример
Используем метод view с передачей дополнительных данных о заказе:
<?php
namespace AppNotifications;
use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateNotificationsMessagesMailMessage;
class OrderConfirmation extends Notification
{
use Queueable;
protected $order;
public function __construct($order)
{
$this->order = $order;
}
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Order Confirmation')
->view('emails.order', [
'order' => $this->order,
'user' => $notifiable,
'items' => ['item1', 'item2', 'item3']
]);
}
}
?>
Шаблон письма с заказом:
<h2>Order Details</h2>
<p>Hello {{ $user->name }}</p>
<p>Order ID: {{ $order->id }}</p>
<p>Items:</p>
<ul>
@foreach ($items as $item)
<li>{{ $item }}</li>
@endforeach
</ul>
Результат выполнения кода:
Hello Alice
Order ID: 12345
Items:
item1
item2
item3
Пример
Используем метод view с простым шаблоном без передачи данных:
<?php
namespace AppNotifications;
use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateNotificationsMessagesMailMessage;
class SystemNotification extends Notification
{
use Queueable;
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->view('emails.system');
}
}
?>
Шаблон системного сообщения:
<div>
<h1>System Update</h1>
<p>Maintenance completed successfully.</p>
<p>All systems are operational.</p>
</div>
Результат выполнения кода:
System Update
Maintenance completed successfully.
All systems are operational.
Смотрите также
-
класс
MailMessage,
основной класс для построения почтовых уведомлений -
метод
line,
который добавляет строку текста в письмо -
метод
greeting,
который устанавливает приветствие в письме -
метод
action,
который добавляет кнопку с действием в письмо