Уведомления в Laravel

Уведомления в Laravel

От автора: в этой статье мы рассмотрим систему уведомлений в веб-среде Laravel. Система позволяет отправлять уведомления Laravel пользователям по различным каналам. Мы рассмотрим, как вы можете отправлять уведомления по электронной почте.

Основные принципы использования уведомлений

Во время разработки приложений вам часто приходится реализовывать уведомления пользователей о различных изменениях состояния. Это может быть либо отправка уведомлений по электронной почте, когда изменен статус заказа, либо отправка СМС об их активности входа в целях безопасности. В данном случае мы говорим о коротких сообщениях, которые просто дают представление об изменениях состояния.

Laravel предоставляет встроенную функцию, которая помогает нам достичь чего-то подобного. Фактически, она делает опыт отправки уведомлений пользователям довольно крутым и приятным!

Преимущество этого подхода заключается в том, что он позволяет выбирать из разных каналов, через которые можно отправлять уведомления. Давайте вкратце рассмотрим различные каналы уведомлений, поддерживаемые Laravel.

Mail: уведомления будут отправляться пользователям в виде электронных писем.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

SMS: Как следует из названия, пользователи получат SMS-уведомления на свой телефон.

Slack: в этом случае уведомления будут отправляться по каналам Slack.

Database: эта опция позволяет хранить уведомления в базе данных, если вы хотите создать пользовательский интерфейс для их отображения.

В нашем примере мы будем использовать канал электронной почты, который и собираемся построить в этом руководстве.
Фактически, это будет довольно простой случай использования, который позволяет пользователям приложения отправлять сообщения друг другу. Когда пользователи получаю новое сообщение в папке «Входящие», мы сообщим им об этом событии, отправив электронное письмо. Конечно, мы сделаем это, используя функцию уведомлений Laravel!

Создание пользовательского класса уведомлений

Как было сказано, мы собираемся настроить приложение, которое позволяет пользователям отправлять сообщения друг другу. С другой стороны, мы будем уведомлять пользователей по электронной почте, когда они получат новое сообщение от других пользователей.

В этом разделе мы создадим файлы, необходимые для реализации данного кейса. Для начала давайте создадим модель сообщения, в которой хранятся сообщения, отправленные пользователями друг другу.

Нам также нужно добавить в таблицу messages несколько полей, например, to , from и message. Итак, давайте изменим файл миграции перед тем, как использовать команду migrate.

Теперь давайте запустим команду migrate, которая создает в базе данных таблицу сообщений.

В результате в базе данных должна быть создана таблица messages. Кроме того, в первую очередь убедитесь, что вы включили стандартную систему аутентификации Laravel, чтобы такие функции, как регистрация и аутентификация, работали из коробки. Если вы не знаете, как это сделать, обратитесь к документации Laravel.

Поскольку каждое уведомление в Laravel представлено отдельным классом, нам необходимо создать собственный класс уведомлений, который будет использоваться для уведомления пользователей. Давайте используем следующую команду артисана, чтобы создать пользовательский класс уведомлений — NewMessage.

В результате должен быть создан класс app/Notifications/NewMessage.php, поэтому давайте заменим содержимое этого файла следующим образом.

Поскольку для отправки уведомлений пользователям мы будем использовать канал электронной почты, метод via будет настроен соответствующим образом. Таким образом, это метод, который позволяет вам настроить тип канала для уведомления.

Также существует метод toMail, который позволяет настраивать различные параметры электронной почты. Фактически метод toMail должен возвращать экземпляр \Illuminate\Notifications\Messages\MailMessage, и этот класс предоставляет методы, которые позволяют настраивать параметры электронной почты.

В их числе метод line позволяет вам добавить в сообщение одну строку. У нас такде есть метод action, который позволяет добавить в сообщение кнопку призыва к действию.

Таким образом, вы можете форматировать сообщение, которое будет отправляться пользователям. Вы можете настроить класс уведомления, когда используете для отправки уведомлений канал электронной почты.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

В конце вам нужно убедиться, что вы реализуете необходимые методы в соответствии с типом канала, сконфигурированным в методе via. Например, если вы используете канал базы данных, который хранит уведомления в базе данных, вам не нужно настраивать метод toMail; вместо этого вы должны реализовать метод toArray, форматирующий данные, которые необходимо сохранить в базе данных.

Как отправлять уведомления

В предыдущем разделе мы создали класс уведомления, готовый к отправке уведомлений. В этом разделе мы создадим файлы, демонстрирующие, как вы можете отправлять уведомления с помощью класса уведомлений NewMessage.

Давайте создадим файл контроллера app/Http/Controllers/NotificationController.php со следующим содержимым.

Естественно, вам нужно добавить связанный маршрут в файл routes/web.php.

Существует два способа, с помощью которых Laravel позволяет отправлять уведомления: используя либо уведомляемый объект, либо фасад Notification.

Если класс модели объекта использует признак Illuminate\Notifications\Notifiable, вы можете вызвать в этой модели метод notify. Класс App\User реализует признак Notifiable и, таким образом, становится уведомляемым объектом. С другой стороны, вы также можете использовать для отправки уведомлений пользователям фасад Illuminate\Support\Facades\Notification.
Давайте рассмотрим метод контроллера index.

В нашем случае мы сообщаем пользователям, когда они получат новое сообщение. Поэтому в первую очередь мы попытались имитировать это поведение в методе index.

Затем мы уведомляем пользователя-получателя о новом сообщении, используя метод уведомления объекта $toUser, так как это уведомляемый объект.

Возможно, вы заметили, что мы также передаем объект $fromUser в первом аргументе метода __construct, так как мы хотим включить в сообщение имя пользователя.

С другой стороны, если вы хотите имитировать это поведение, используя фасад Notification, это довольно легко сделать, используя следующий фрагмент кода.

Как вы можете видеть, мы использовали для отправки уведомления пользователю метод фасада Notification send.

Перейдите в браузере по URL-адресу http://your-laravel-site-domain/notify/index. Если вы еще не вошли в систему, вы будете перенаправлены в панель входа в систему. После входа в систему вы должны получить электронное письмо с уведомлением на адрес электронной почты, прикрепленный к пользователю 1.

Вам может быть интересно, как система уведомлений обнаруживает адрес, если мы еще не настроили его. В этом случае система уведомлений пытается найти свойство email в уведомляемом объекте. И класс объекта App \ User уже содержит это свойство, поскольку мы используем систему аутентификации Laravel по умолчанию.

Однако, если вы хотите переопределить это поведение и использовать другое свойство, отличное от email, вам просто нужно определить следующий метод в классе уведомления.

Теперь система уведомлений для извлечения адреса должна искать свойство email_address вместо свойства email.
Именно так вы можете использовать систему уведомлений Laravel. Это подводит нас к концу статьи!

Заключение

То, что мы изучили сегодня, является одной из полезных, но наименее обсуждаемых функций Laravel — уведомления. Она позволяет отправлять уведомления пользователям через разные каналы.

После краткого введения мы реализовали реальный пример, иллюстрирующий, как отправлять уведомления по электронной почте. На практике это действительно удобно в случае отправки коротких сообщений об изменениях состояния в вашем приложении.

Автор: Sajal Soni

Источник: https://code.tutsplus.com/

Редакция: Команда webformyself.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Научиться

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree