Метод notify
Метод notify применяется к экземпляру модели Eloquent или вызывается статически через фасад Notification. Он предназначен для отправки уведомлений получателям. Первым параметром передаётся экземпляр класса уведомления, который реализует логику формирования письма. Вторым параметром можно указать каналы отправки, но по умолчанию используется канал 'mail'.
Метод поддерживает отправку как одному получателю, так и коллекции пользователей. Возвращает void, так как отправка происходит асинхронно через очередь.
Синтаксис
<?php
$user->notify($notification);
Notification::send($users, $notification);
?>
Пример
Отправим уведомление одному пользователю через экземпляр модели:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use AppNotificationsWelcomeNotification;
class UserController extends Controller
{
public function sendWelcome(User $user)
{
$user->notify(new WelcomeNotification());
echo "Welcome notification sent";
}
}
?>
Результат выполнения кода:
"Welcome notification sent"
Пример
Отправим уведомление нескольким пользователям через фасад Notification:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use AppNotificationsNewsletterNotification;
use IlluminateSupportFacadesNotification;
class UserController extends Controller
{
public function sendNewsletter()
{
$users = User::where('subscribed', true)->get();
Notification::send($users, new NewsletterNotification());
echo "Newsletter sent to " . $users->count() . " users";
}
}
?>
Результат выполнения кода:
"Newsletter sent to 5 users"
Пример
Отправим уведомление с использованием метода notifyNow для немедленной отправки без очереди:
<?php
namespace AppHttpControllers;
use AppModelsOrder;
use AppModelsUser;
use AppNotificationsOrderShippedNotification;
class OrderController extends Controller
{
public function ship(Order $order)
{
$user = User::find($order->user_id);
$user->notifyNow(new OrderShippedNotification($order));
echo "Order shipped notification sent immediately";
}
}
?>
Результат выполнения кода:
"Order shipped notification sent immediately"
Пример класса уведомления
Создадим класс уведомления, который реализует метод toMail для настройки email:
<?php
namespace AppNotifications;
use IlluminateBusQueueable;
use IlluminateNotificationsNotification;
use IlluminateContractsQueueShouldQueue;
use IlluminateNotificationsMessagesMailMessage;
class WelcomeNotification extends Notification implements ShouldQueue
{
use Queueable;
public function via($notifiable)
{
return ['mail'];
}
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hello ' . $notifiable->name)
->line('Welcome to our platform!')
->action('Get Started', url('/dashboard'))
->line('Thank you for joining us.');
}
}
?>
Смотрите также
-
метод
notifyNow,
который отправляет уведомление немедленно без очереди -
фасад
Notification,
который предоставляет статические методы для отправки уведомлений -
класс
MailMessage,
который используется для построения email-писем в уведомлениях -
метод
send,
который отправляет уведомления через фасад Notification