Как сделать свой вид письма при сбросе пароля в Laravel

Ромчик
0

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

Шаг 1. Переопределим метод sendPasswordResetNotification

Переходим в модель User. Это модель связывает нас с таблицей users, в которой хранятся данные пользователей.  У вас может быть другая модель. Но по умолчанию в Laravel это User. Как сделать авторизацию из другой таблицы вы можете прочитать в статье «Авторизация в Laravel 5.3 из нескольких таблиц»


public function sendPasswordResetNotification($token)

{

$this->notify(new ResetPasswordNotification($token));

}

И не забываем импортировать уведомление.


use App\Notifications\ResetPassword as ResetPasswordNotification;

Шаг 2. Создание уведомления

Для того, чтобы создать уведомление используем команду


php artisan make:notification ResetPasswordNotification

Открываем только, что созданный файл ResetPasswordNotification, который расположен App/Notifications

И редактируем метод toMail, т.к. мы хотим отправлять email уведомление.


public function toMail($notifiable)

{

$subject = 'Восстановление пароля';

return (new Mailable($this->token, $notifiable))->subject($subject)->to($notifiable->email);

}

Не забываем импортировать:


use App\Mail\ResetPassword as Mailable;

Об уведомлениях можно прочитать тут.

Шаг 3. Создание Mailable.

Теперь нам необходимо создать класс Mailable ResetPassword. Для этого используем artisan команду:


php artisan make:mail ResetPassword

После будет создан наш класс, который описан в App\Mail\ResetPassword.php

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


protected $token;

protected $notifiable;

И изменяем метод __construct()


public function __construct($token, $notifiable)

{

$this->token = $token;

$this->notifiable = $notifiable;

}

Дальше изменяем метод build, который и отвечает за отправление email сообщений. Более подробно об классе Mailable вы можете прочитать в документации по Laravel.


public function build()

{

return $this->markdown('emails.reset_password_notification', [

'url' => url(config('app.url').route('password.reset', $this->token, false)),

'name' => $this->notifiable->name,

]);

}

Отлично. Осталось только добавить шаблон нашего email сообщения.

Шаг 4. Создание шаблона email сообщения

Шаблоны email сообщений находятся в каталоге resources/view/emails. А наш шаблон будет называться reset_password_notification. Это мы определили  в методе build.

Создаем файл reset_password_notification.blade.php в каталоге resources/view/emails. И добавляем в него следующий код:


Для смены пароля перейдите по следующей ссылке

<a href="{{ $url }}">{{ $url }}</a>

В данный файл вы можете добавить любой html код, необходимый для верстки вашего email сообщения.

Более подробно о шаблонах Laravel вы можете почитать в официальной документации.

Вот и все.

Вывод.

Мы с вами изменили шаблон email сообщения. Таким образом вы можете менять представления для email сообщений в зависимости от различных условий, например, от языка приложения.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2019 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика