Практически в каждом приложении, которое мы разрабатываем на Ларавел, нам нужно отправлять уведомления, иногда для админов о новых заявках, иногда для пользователей.
Laravel поставляется с очень удобным шаблоном для отправки писем, который мы используем во многих проектах, почти не меняя его.
Давайте же разберёмся с отправкой уведомлений в Ларавел. Для того, что бы создать новое уведомление просто выполните следующую команду:
php artisan make:notification NewInvoice
Это создаст файл NewInvoice в папке «app / notifications»
Для отправки уведомления мы используем следующий код:
Notification::send($users, new NewInvoice($invoice));
// или
$user->notify(new NewInvoice($invoice);
Базовая структура, которую мы используем в большинстве случаев выглядит примерно так:
public function toMail($notifiable)
{
$url = url('/invoice/'.$this->invoice->id);
return (new MailMessage)
->greeting('Привет!')
->line('Вы получили новый счёт на оплату!')
->action('Посмотреть', $url)
->line('Ваше супер приложение yourapp.com');
}
Наверняка вы знаете, что в Ларавел можно переопределять шаблоны любого пакета, для этого достаточно «опубликовать» их в папке вашего приложения, в этом нам поможет консольная команда:
php artisan vendor:publish --tag=laravel-notifications
// и затем
php artisan vendor:publish --tag=laravel-mail
Мы рассмотрели базовые приёмы для отправки уведомлений в Ларавел, а теперь перейдём к его расширенным возможностям.
Трюки и подсказки
Это список всех доступных параметров:
- 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)
Пример использования всех возможных комбинаций:
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() — Конец пиьсьма footer в независимости от позиции в коде
- line() — Строка которая принимает 3 типа данных, текст, html разметку и массив, в примере выше есть все 3
- with() — работает аналогично line()
- action() — кнопка действия в базовом шаблоне. Используется только один раз, при повторном использовании выводит только последний результат
- error() — меняет цвет кнопки action() на красный,
- success() — на зеленый, а по умолчанию у кнопки action() — синий.
- level() — принимает параметры аналонично функиям выше ‘info’,’error’ или ‘success’.