Метод channels класса Notification
Метод channels класса Notification возвращает массив имён каналов, через которые должно быть доставлено уведомление. Он используется системой Notifier для определения транспортов доставки: email, SMS, чата или push. По умолчанию метод возвращает пустой массив.
Синтаксис
public function channels(RecipientInterface $recipient): array
Пример
Давайте создадим класс уведомления и укажем, что оно должно отправляться через каналы 'email' и 'sms':
<?php
namespace AppNotification;
use SymfonyComponentNotifierNotificationNotification;
use SymfonyComponentNotifierRecipientRecipientInterface;
class ArticleNotification extends Notification
{
public function channels(RecipientInterface $recipient): array
{
return ['email', 'sms'];
}
}
?>
Результат выполнения метода:
["email", "sms"]
Пример
Давайте отправим уведомление через класс Notifier и проверим, что метод channels возвращает выбранные каналы:
<?php
namespace AppController;
use AppNotificationArticleNotification;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentNotifierNotifierInterface;
use SymfonyComponentNotifierRecipientEmailRecipient;
use SymfonyComponentRoutingAttributeRoute;
class NotifyController extends AbstractController
{
#[Route('/notify', name: 'notify_index')]
public function index(NotifierInterface $notifier): Response
{
$notification = new ArticleNotification();
$recipient = new EmailRecipient('user@example.com');
$channels = $notification->channels($recipient);
return new Response(implode(', ', $channels));
}
}
?>
Результат выполнения кода для адреса /notify:
email, sms
Пример
Давайте сделаем так, чтобы для разных получателей выбирались разные каналы доставки:
<?php
namespace AppNotification;
use SymfonyComponentNotifierNotificationNotification;
use SymfonyComponentNotifierRecipientEmailRecipient;
use SymfonyComponentNotifierRecipientRecipientInterface;
class ArticleNotification extends Notification
{
public function channels(RecipientInterface $recipient): array
{
if ($recipient instanceof EmailRecipient) {
return ['email'];
}
return ['sms'];
}
}
?>
Результат выполнения метода для email-получателя:
["email"]
Смотрите также
-
класс
Notification,
который представляет уведомление в Notifier -
метод
subject,
который задаёт тему уведомления -
метод
content,
который задаёт содержимое уведомления -
метод
importance,
который задаёт важность уведомления