РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
838 of 1392 menu

Метод toMail

Метод toMail применяется в классе уведомления для формирования email-сообщения, которое будет отправлено получателю. Метод получает экземпляр Notifiable в качестве параметра и должен возвращать объект MailMessage, содержащий тему, приветствие, текст и другие элементы письма. Если метод не определён, уведомление не сможет быть отправлено по email.

Синтаксис

<?php use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; class CustomNotification extends Notification { public function toMail($notifiable) { return (new MailMessage) ->subject('Subject') ->greeting('Hello!') ->line('Message text'); } } ?>

Пример

Давайте создадим уведомление о регистрации нового пользователя и определим для него email-письмо с приветствием:

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; class RegistrationNotification extends Notification { use Queueable; public function __construct() { // } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { return (new MailMessage) ->subject('Welcome to our site') ->greeting('Hello ' . $notifiable->name . '!') ->line('Thank you for registering on our website.') ->line('We are glad to see you!') ->action('Visit site', url('/')) ->salutation('Best regards'); } } ?>

Пример

Отправим созданное уведомление пользователю с помощью метода notify модели User:

<?php namespace App\Http\Controllers; use App\Models\User; use App\Notifications\RegistrationNotification; class UserController extends Controller { public function register() { $user = User::find(1); $user->notify(new RegistrationNotification()); return response()->json(['message' => 'Notification sent']); } } ?>

Пример

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

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; class ResetPasswordNotification extends Notification { use Queueable; protected $token; public function __construct($token) { $this->token = $token; } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { $resetUrl = url('/password/reset/' . $this->token); return (new MailMessage) ->subject('Reset password') ->greeting('Hello!') ->line('You are receiving this email because we received a password reset request for your account.') ->action('Reset password', $resetUrl) ->line('If you did not request a password reset, no further action is required.') ->error() ->salutation('Regards'); } } ?>

Пример

Используем метод toMail для отправки уведомления с пользовательским Blade-шаблоном:

<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; class CustomTemplateNotification extends Notification { use Queueable; protected $data; public function __construct($data) { $this->data = $data; } public function via($notifiable) { return ['mail']; } public function toMail($notifiable) { return (new MailMessage) ->subject('Custom notification') ->view('emails.custom', ['data' => $this->data]); } } ?>

Пример Blade-шаблона для письма:

<div style="padding: 20px;"> <h1>Custom notification</h1> <p>Data: {{ $data }}</p> <p>Thank you for using our service!</p> </div>

Результат выполнения кода при отправке уведомления:

"Notification sent"

Смотрите также

  • метод via,
    который определяет каналы доставки уведомления
  • метод toArray,
    который формирует массив данных для уведомления
  • метод toDatabase,
    который определяет данные для базы данных
  • метод notify,
    который отправляет уведомление пользователю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить