Класс Recipient
Класс Recipient представляет получателя
уведомления в компоненте Notifier. Объект этого
класса хранит контактные данные получателя
(например, email или телефон), список каналов
доставки и язык, который используется при
формировании сообщения. Объект Recipient
передаётся первым параметром в метод
send
класса Notifier.
Первым параметром конструктора передаётся email или телефон получателя. Вторым параметром можно передать массив каналов доставки, а третьим - язык получателя. Если каналы не указаны, Symfony использует каналы, настроенные для уведомления по умолчанию.
Синтаксис
<?php
use Symfony\Component\Notifier\Recipient\Recipient;
$recipient = new Recipient($email, $channels, $locale);
?>
Пример
Давайте создадим получателя с email-адресом и отправим ему уведомление:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\Notification\Notification;
use Symfony\Component\Notifier\NotifierInterface;
use Symfony\Component\Notifier\Recipient\Recipient;
use Symfony\Component\Routing\Attribute\Route;
class NotifyController extends AbstractController
{
#[Route('/notify', name: 'notify_index')]
public function index(NotifierInterface $notifier): Response
{
$recipient = new Recipient('user@example.com');
$notification = new Notification('hello');
$notifier->send($notification, $recipient);
return new Response('sent');
}
}
?>
Результат выполнения кода:
sent
Пример
Давайте укажем каналы доставки и язык получателя:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\Notification\Notification;
use Symfony\Component\Notifier\NotifierInterface;
use Symfony\Component\Notifier\Recipient\Recipient;
use Symfony\Component\Routing\Attribute\Route;
class NotifyController extends AbstractController
{
#[Route('/notify-user', name: 'notify_user')]
public function user(NotifierInterface $notifier): Response
{
$recipient = new Recipient(
'user@example.com',
['email', 'sms'],
'en'
);
$notification = new Notification('article');
$notifier->send($notification, $recipient);
return new Response('sent to channels');
}
}
?>
Результат выполнения кода:
sent to channels
Пример
Давайте получим данные получателя через методы
getEmail, getPhone,
getChannels и getLocale:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\Recipient\Recipient;
use Symfony\Component\Routing\Attribute\Route;
class NotifyController extends AbstractController
{
#[Route('/recipient', name: 'recipient_info')]
public function info(): Response
{
$recipient = new Recipient(
'user@example.com',
['email'],
'en'
);
echo $recipient->getEmail();
echo $recipient->getChannels()[0];
echo $recipient->getLocale();
return new Response('done');
}
}
?>
Результат выполнения кода:
"user@example.comemailen"
Смотрите также
-
класс
Notification,
который описывает само уведомление -
класс
Notifier,
который отправляет уведомления получателям -
метод
send,
который принимает уведомление и получателя -
класс
EmailRecipient,
который задаёт получателя только для email-канала