Laravel 5.3 Переопределить reset шаблон клика для электронной почты

Как настроить путь к шаблону клика reset в Laravel 5.3?

Используемый шаблон: vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php

Я бы хотел создать свой собственный.

Также, как изменить текст этого сообщения, предопределенного в: vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php

public function toMail()
{
    return (new MailMessage)
        ->line([
            'You are receiving this email because we received a password reset request for your account.',
            'Click the button below to reset your password:',
        ])
        ->action('Reset Password', url('password/reset', $this->token))
        ->line('If you did not request a password reset, no further action is required.');
}

Ответ 1

Чтобы изменить шаблон, вы должны использовать команду artisan php artisan vendor:publish, она создаст шаблоны клипов в вашем каталоге resources/views/vendor. Чтобы изменить текст электронной почты, вы должны переопределить метод sendPasswordResetNotification в своей модели пользователя. Это описано здесь https://laravel.com/docs/5.3/passwords в разделе Reset Настройка электронной почты.

Вы должны добавить новый метод в свою модель пользователя.

public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}

и вместо этого используйте свой собственный класс для уведомления ResetPasswordNotification.

ОБНОВЛЕНО: для запроса @lewis4u

Пошаговая инструкция:

  • Чтобы создать новый класс Notification, вы должны использовать эту командную строку php artisan make:notification MyResetPassword. Он создаст новый класс уведомлений MyResetPassword в каталоге приложений/уведомлений.

  • добавить use App\Notifications\MyResetPassword; в модель пользователя

  • добавьте новый метод в свою модель пользователя.

    public function sendPasswordResetNotification($token)
    {
        $this->notify(new MyResetPassword($token));
    }
    
  • выполнить команду php artisan php artisan vendor:publish --tag=laravel-notifications После запуска этой команды шаблоны уведомлений по почте будут размещаться в каталоге ресурсов/представлений/поставщиков/уведомлений.

  • Отредактируйте метод класса MyResetPassword toMail(), если хотите. Здесь описано https://laravel.com/docs/5.3/notifications

  • Измените шаблон своего электронного бланка, если хотите. Это resources/views/vendor/notifications/email.blade.php

Бонус: Видео Laracast: https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/9

PS: Спасибо @Garric15 за предложение о php artisan make:notification

Ответ 2

Я хотел подробно рассказать об очень полезном Eugens answer, но не имел достаточной репутации, чтобы оставить комментарий.

Если вам нравится иметь собственную структуру каталогов, вам не нужно использовать шаблоны Blade, опубликованные в views/vendor/notifications/... Когда вы создаете новый класс Notification и начинаете создавать свой класс MailMessage, у него есть метод view(), который вы можете использовать для переопределения представлений по умолчанию:

/**
 * Get the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
public function toMail($notifiable)
{
    return (new MailMessage)
        ->view('emails.password_reset');
        // resources/views/emails/password_reset.blade.php will be used instead.
}