Laravel 5.3 重新定义 "reset email" blade 模板
Laravel 5.3 Redefine "reset email" blade template
如何在Laravel 5.3中自定义重置邮件blade模板的路径?
使用的模板是: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.');
}
要更改模板,您应该使用 artisan 命令 php artisan vendor:publish
它会在您的 resources/views/vendor
目录中创建 blade 个模板。要更改电子邮件的文本,您应该覆盖 User 模型上的 sendPasswordResetNotification 方法。 https://laravel.com/docs/5.3/passwords 在 重置电子邮件自定义 部分对此进行了描述。
您必须向用户模型添加新方法。
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
并使用您自己的 class 代替 ResetPasswordNotification 进行通知。
已更新:@lewis4u 请求
分步说明:
要创建新通知 class,您必须使用此命令行 php artisan make:notification MyResetPassword
。它将在 app/Notifications 目录中创建一个新的通知 Class 'MyResetPassword'。
将 use App\Notifications\MyResetPassword;
添加到您的用户模型
向您的用户模型添加新方法。
public function sendPasswordResetNotification($token)
{
$this->notify(new MyResetPassword($token));
}
运行 php artisan 命令 php artisan vendor:publish --tag=laravel-notifications
运行执行此命令后,邮件通知模板将位于resources/views/vendor/notifications 目录.
如果需要,请编辑您的 MyResetPassword
class 方法 toMail()
。这里有描述 https://laravel.com/docs/5.3/notifications
如果需要,请编辑您的电子邮件 blade 模板。这是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
的建议
我想详细说明一个非常有用的 ,但没有足够的声誉来发表评论。
如果您想拥有自己的目录结构,则不必使用发布到 views/vendor/notifications/..
的 Blade 模板。当您创建一个新的通知 class 并开始构建您的 MailMessage
class 时,它有一个 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.
}
除了上述 Laravel 5.6 的答案之外,这里更容易将数组中的变量传递到您的自定义电子邮件模板。
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/invoice/'.$this->invoice->id);
return (new MailMessage)
->subject('Invoice Paid')
->markdown('emails.password_reset', ['url' => $url]);
}
如何在Laravel 5.3中自定义重置邮件blade模板的路径?
使用的模板是: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.');
}
要更改模板,您应该使用 artisan 命令 php artisan vendor:publish
它会在您的 resources/views/vendor
目录中创建 blade 个模板。要更改电子邮件的文本,您应该覆盖 User 模型上的 sendPasswordResetNotification 方法。 https://laravel.com/docs/5.3/passwords 在 重置电子邮件自定义 部分对此进行了描述。
您必须向用户模型添加新方法。
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
并使用您自己的 class 代替 ResetPasswordNotification 进行通知。
已更新:@lewis4u 请求
分步说明:
要创建新通知 class,您必须使用此命令行
php artisan make:notification MyResetPassword
。它将在 app/Notifications 目录中创建一个新的通知 Class 'MyResetPassword'。将
use App\Notifications\MyResetPassword;
添加到您的用户模型向您的用户模型添加新方法。
public function sendPasswordResetNotification($token) { $this->notify(new MyResetPassword($token)); }
运行 php artisan 命令
php artisan vendor:publish --tag=laravel-notifications
运行执行此命令后,邮件通知模板将位于resources/views/vendor/notifications 目录.如果需要,请编辑您的
MyResetPassword
class 方法toMail()
。这里有描述 https://laravel.com/docs/5.3/notifications如果需要,请编辑您的电子邮件 blade 模板。这是
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
我想详细说明一个非常有用的
如果您想拥有自己的目录结构,则不必使用发布到 views/vendor/notifications/..
的 Blade 模板。当您创建一个新的通知 class 并开始构建您的 MailMessage
class 时,它有一个 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.
}
除了上述 Laravel 5.6 的答案之外,这里更容易将数组中的变量传递到您的自定义电子邮件模板。
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/invoice/'.$this->invoice->id);
return (new MailMessage)
->subject('Invoice Paid')
->markdown('emails.password_reset', ['url' => $url]);
}