• Laravel Notification: Полное руководство с примерами кода
    Хотите заказать услугу прямо сейчас?

    Laravel Notification: Полное руководство с примерами кода

    В Laravel система уведомлений позволяет отправлять сообщения пользователям различными каналами: email, SMS, Slack, базы данных и другими. С помощью Laravel Notification можно быстро интегрировать уведомления в приложение и управлять их доставкой.


    Что такое Laravel Notification

    Notification — это механизм Laravel для отправки сообщений пользователям через разные каналы. Он поддерживает:

    • Email (SMTP, Mailgun, Sendgrid)
    • SMS (через сторонние сервисы)
    • Slack и Telegram (через webhook)
    • База данных (DB Notifications)
    • Custom каналы (собственные драйверы)

    Главная цель — отделить логику уведомлений от контроллеров и моделей, сделать её универсальной и расширяемой.


    Создание уведомления

    Для создания уведомления используется Artisan-команда:

    php artisan make:notification InvoicePaid
    

    После этого в папке app/Notifications появится файл InvoicePaid.php.

    Пример уведомления по email

    <?php
    
    namespace App\Notifications;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Notifications\Notification;
    use Illuminate\Notifications\Messages\MailMessage;
    
    class InvoicePaid extends Notification
    {
        use Queueable;
    
        protected $invoice;
    
        public function __construct($invoice)
        {
            $this->invoice = $invoice;
        }
    
        public function via($notifiable)
        {
            return ['mail'];
        }
    
        public function toMail($notifiable)
        {
            return (new MailMessage)
                ->subject('Оплата счета подтверждена')
                ->greeting('Здравствуйте!')
                ->line('Счет #' . $this->invoice->id . ' был успешно оплачен.')
                ->action('Просмотреть счет', url('/invoices/' . $this->invoice->id))
                ->line('Спасибо, что пользуетесь нашим сервисом!');
        }
    }
    

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

    Чтобы отправить уведомление пользователю, используйте метод notify модели User:

    $user = User::find(1);
    $invoice = Invoice::find(101);
    
    $user->notify(new \App\Notifications\InvoicePaid($invoice));
    

    Если нужно отправить уведомление нескольким пользователям:

    $users = User::where('subscribed', true)->get();
    Notification::send($users, new InvoicePaid($invoice));
    

    Уведомления в базе данных

    Для хранения уведомлений в базе данных необходимо создать таблицу notifications:

    php artisan notifications:table
    php artisan migrate
    

    В уведомлении добавляем метод toDatabase:

    public function via($notifiable)
    {
        return ['database'];
    }
    
    public function toDatabase($notifiable)
    {
        return [
            'invoice_id' => $this->invoice->id,
            'amount' => $this->invoice->amount,
            'message' => 'Счет успешно оплачен'
        ];
    }
    

    Вывод уведомлений в шаблоне Blade:

    @foreach(Auth::user()->notifications as $notification)
        <div>
            {{ $notification->data['message'] }} — {{ $notification->created_at }}
        </div>
    @endforeach
    

    Slack и другие каналы

    Чтобы отправлять уведомления в Slack, добавляем метод toSlack:

    use Illuminate\Notifications\Messages\SlackMessage;
    
    public function via($notifiable)
    {
        return ['slack'];
    }
    
    public function toSlack($notifiable)
    {
        return (new SlackMessage)
            ->success()
            ->content('Счет #' . $this->invoice->id . ' оплачен');
    }
    

    Для SMS или кастомных каналов Laravel позволяет создавать свои драйверы уведомлений.


    Очереди и планирование уведомлений

    Чтобы уведомления не блокировали работу приложения, их можно отправлять через очереди:

    php artisan queue:table
    php artisan migrate
    

    В уведомлении используем трейт Queueable (уже добавлен при создании):

    $user->notify((new InvoicePaid($invoice))->delay(now()->addMinutes(5)));
    

    Laravel автоматически поместит уведомление в очередь и обработает его через worker.


    FAQ — Часто задаваемые вопросы

    1. Можно ли отправлять уведомления без модели User?

    Да, используйте фасад Notification::route() для отправки по email или Slack без конкретного пользователя.

    2. Как использовать несколько каналов одновременно?

    Метод via() может возвращать массив, например ['mail', 'database', 'slack'].

    3. Где хранится текст уведомления в базе данных?

    В таблице notifications поле data хранит JSON с содержимым уведомления.

    4. Можно ли кастомизировать очередь уведомлений?

    Да, в уведомлении можно определить свой $queue и подключить отдельный worker для обработки.

    5. Как увидеть непрочитанные уведомления?

    В Blade-шаблоне: Auth::user()->unreadNotifications возвращает коллекцию непрочитанных уведомлений.


    Вывод

    Система уведомлений Laravel позволяет гибко отправлять сообщения пользователям через различные каналы. Она поддерживает очереди, хранение в базе данных, интеграцию с внешними сервисами и полностью управляется через объектно-ориентированный подход. Правильная настройка Notification повышает UX приложения и упрощает коммуникацию с пользователями.

    📰 Последние статьи

    🔐 Почему компании переходят на Zero Trust: новая модель безопасности в 2026 году

    Читать

    Чёрный список работодателей — почему программисты закрывают на него глаза в 2026 году

    Читать

    🚨 Почему ломается сайт: полный разбор с примерами кода

    Читать

    Почему становятся программистами 💻

    Читать

    Дорама «Милашка-программист» — честный разбор от программиста

    Читать

    «Не заставляйте меня думать» — Стив Круг: разбор книги, идеи и честная критика

    Читать

    Какие книги читать программисту с нуля — дружеский обзор без скучной теории

    Читать

    Почему одни разработчики зарабатывают $100, а другие $10 000

    Читать

    Разговор о взломе ВК и безопасности аккаунтов

    Читать

    GitHub Copilot и “код из чужих проектов” — в чём скандал

    Читать

    Почему даже senior-разработчики иногда боятся обновлять Bitrix

    Читать

    Жаргон программистов: как они разговаривают и почему это звучит как заклинания

    Читать

    Я вообще хороший программист или просто умею гуглить?

    Читать

    Что будет, если отключат интернет: полный разбор последствий

    Читать

    Что сдавать на программиста после 9 класса в 2026 году

    Читать

    ИИ для программистов: как искусственный интеллект меняет разработку в 2026 году

    Читать

    Как защищают приложения в 2026: угрозы, архитектура и реальная безопасность

    Читать

    🚀 Можно ли написать сайт за 1 день: честный разбор с примерами

    Читать

    1С-Битрикс снова подорожал: рынок это воспринял гораздо болезненнее, чем кажется

    Читать

    🤖 Заменит ли ИИ программистов: полный разбор будущего профессии

    Читать

    ИИ для программистов 1С: как искусственный интеллект меняет разработку в 1С

    Читать

    Киберпреступность в 2026: как устроена теневая цифровая экономика

    Читать

    Комментарии (0)

    Оставить комментарий

    Кейсы компании

    Кейс: создание кастомной корзины на 1С‑Битрикс с лицензией «Стандарт»

    Посмотреть

    Кастомная система комментариев WordPress с микроразметкой и AJAX

    Посмотреть

    Как создать компонент в Битрикс 1С, который изменяет цену на китайские юани

    Посмотреть

    🎯 Кейс Павлов Студио: как мы внедрили Яндекс SmartCaptcha для защиты всех форм сайта (включая Bitrix)

    Посмотреть

    Разработка онлайн-калькулятора для товаров на сайте wp

    Посмотреть

    Обновление сайта с битрикс 1с с версии php 5.6 до 8.2

    Посмотреть

    Разработка сервиса для сбора информации из соц.сети «Вконтате»

    Посмотреть

    Разработка мега-меню для сайта на wordpress https://doma-penoblok.ru/

    Посмотреть

    Разработка и сопровождение сайта  https://aaa-sitrak.ru/ с последующей интеграцией на 1с-битрикс

    Посмотреть

    Разработка интернет-магазина https://sklad38.ru/ на битрикс 1с

    Посмотреть

    Доработка сайта https://tochka-kontakta.ru/ для организации «Точка Контакта»

    Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите ее, затем начинайте создавать!

    Посмотреть
    Max Messenger