Laravel (5.7) Уведомления
Уведомлять пользователей о различных событиях, происходящих в вашем приложении, очень легко, благодаря уведомлениям Laravel. Уведомления Laravel позволяют отправлять сообщения любому пользователю по электронной почте, Slack, SMS и многим другим каналам.
Создание уведомления
Чтобы создать новое уведомление, вы можете запустить следующую команду ремесленника:
php artisan make:notification TestMessage
И это создаст новый файл, расположенный в appNotificationsTestMessage.php со следующим содержанием:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class TestMessage extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->line('The introduction to the notification.')
->action('Notification Action', url('/'))
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
Обратите внимание на метод via в приведенном выше коде. Здесь вы можете указать, как вы хотите, чтобы пользователь был уведомлен. В приведенном выше примере мы указываем, что мы хотим, чтобы пользователь был уведомлен по электронной почте:
return ['mail'];
Поскольку мы хотим, чтобы они получали уведомления по почте, наше уведомление будет запускать метод toMail (), когда вы отправляете уведомление пользователю.
Если вы хотите включить уведомления Slack, вы бы добавили 'slack' в метод via ():
return ['mail', 'slack'];
И тогда ваше уведомление вызовет метод toSlack ():
public function toSlack($notifiable)
{
return (new SlackMessage)
->content('One of your invoices has been paid!');
}
Есть много других каналов уведомлений, о которых вы можете узнать в официальной документации Laravel:
https://laravel.com/docs/5.7/notifications
Отправка уведомления
Использование черты Notifiable в вашем классе User позволит вам легко отправлять уведомления пользователям:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
}
После добавления этой черты вы можете запустить следующее:
$user->notify(new App\Notifications\TestMessage);
И этому конкретному пользователю будет отправлено уведомление TestMessage. Далее, если вы хотите отправить его всем своим пользователям, вы можете использовать фасад уведомлений следующим образом:
Notification::send($users, new App\Notifications\TestMessage);
Предыдущая: Laravel (5.7) Mail
Далее: Laravel (5.7) Разработка пакетов
Новый контент: Composer: менеджер зависимостей для PHP , R программирования