Добрый день, читатели 🙂
Сегодня передо мной встала задача — клиент хотел чтобы письмо для восстановления пароля приходило с шаблоном определенного вида.
Немного разобравшись, я нашел что модель пользователя (User) декларируется примерно так: class User extends \Illuminate\Foundation\Auth\User
В свою очередь, базовый класс пользователя подключает в себя трейт CanResetPassword.
В трейте можем видеть следующий метод:
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
Данный метод как раз и отправляет нотификацию для восстановления пароля. Все, что нам нужно сделать — создать новый класс ResetPasswordNotification в папке app/Mail/. После чего переопределяем метод в модели пользователя, подключая уже свою реализацию ResetPasswordNotification.
В своей реализации класса вставляем следующее:
namespace App\Mail;
use Illuminate\Auth\Notifications\ResetPassword;
class ResetPasswordNotification extends ResetPassword
{
/**
* Build the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return parent::toMail($notifiable)
->view('emails.reset_password');
}
}
Что же он делает? Он полностью использует родительскую реализацию, но добавляет к сообщению свой view файл, в котором будут доступны следующие переменные:
$level
, $subject
, $greeting
, $salutation
, $introLines
, $outroLines
, $actionText
, $actionUrl
.
Здесь $actionText - это текст кнопки "восстановить пароль", а $actionUrl - ссылка на восстановление.