Почти в каждом приложении, которое мы разрабатываем, нам нужно отправить какое-то уведомление. Laravel поставляется с очень хорошим адаптивным шаблоном для электронных писем, который мы используем много раз, не меняя большую его часть.
Основы
Создать уведомление так же просто, как выполнить следующую команду
php artisan make:notification InvoicePaid
Это создаст файл в папке “app/notifications”.
Для отправки уведомления мы используем этот код
Notification::send($users, new InvoicePaid($invoice));
// или
$user->notify(new InvoicdPaid($invoice);
MailMessage
Основная структура и функциональность, которые мы используем большую часть времени, таковы.
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/invoice/'.$this->invoice->id);
return (new MailMessage)
->greeting('Hello!')
->line('One of your invoices has been paid!')
->action('View Invoice', $url)
->line('Thank you for using our application!');
}
Возможно, вы уже знаете, но мы можем публиковать HTML-и текстовые ресурсы.
php artisan vendor:publish --tag=laravel-notifications
// и
php artisan vendor:publish --tag=laravel-mail
Советы и рекомендации
В прошлом разделе мы рассмотрели, что является основной нормальной ситуацией создания уведомления по электронной почте.
Давайте рассмотрим все опции, которые предоставляет MailMessage, и как их использовать.
- greeting(string $text)
- salutation(string $text)
- line(\Illuminate\Contracts\Support\Htmlable / string|array $text)
- success()
- error()
- level(‘info’) // ‘info’, ‘success’, ‘error’
- subject(string $text)
- action(string $text, string $url)
Пример
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject('Lorem ipsum')
->greeting('Greeting Victor Yoalli!')
->salutation(new HtmlString('<strong>Salutation</strong> Victor Yoalli!'))
->line('Line of Plain Text')
->with(new HtmlString('<b>new HtmlString</b>("using with.")'))
->action('Notification Action', url('/'))
->line(new HtmlString(‘<b>new HtmlString</b>("using <i>line</i>.")'))
->line(['array of elements:[','uno','dos','tres',']using line'])
->level('info')
->error()
->success()
->line('Thank you for using our application!');
}
Как вы можете видеть в результате:
- функция subject() не отображается, потому что это тема электронной почты.
- greeting () всегда будет отображаться в начале независимо от того, где вы вызываете эту функцию.
- salutation() похоже на приветствие, но оно будет показано в конце.
- line () принимает 3 типа данных: string, HtmlString и array (), я использую три случая в этом примере.
- with() аналогичен строке()
- action() печатает кнопку вызова действия, и она может быть только одной. Если вы попытаетесь добавить больше одного, то появится последний.
- error() изменит красный цвет, success() на зеленый кнопки action (), по умолчанию синий, который такой же, как если бы вы использовали level (‘info’).
- level() имеет тот же эффект, за исключением того, что вам нужно указать “info”, “error” или “success”.
Результат
Надеюсь, это поможет.