覆盖电子邮件模板Laravel 5.3中的密码重置URL

时间:2017-07-14 14:01:29

标签: laravel email routing passwords reset

我正在尝试覆盖正在放入电子邮件中的actionUrl以重置用户帐户。但无论我做什么,它都保持不变。我尝试覆盖我的Route文件。有人能帮助我吗?

以下是我的路线文件中的路线:

Route::get('cms/password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');

这是我的电子邮件模板:

<p style="{{ $style['paragraph-sub'] }}">
    <a style="{{ $style['anchor'] }}" href="{{ $actionUrl }}" target="_blank">
        {{ $actionUrl }}
    </a>
</p>` 

我知道actionUrl是在SimpleMessage.php中定义的,但我不知道它在哪里设置。

1 个答案:

答案 0 :(得分:5)

该链接在printf中设置。这是通过密码重置请求发送的通知。

此通知在Illuminate\Auth\Notifications\ResetPassword中初始化,这是一个特定的特征,而不是您的Illuminate\Auth\Passwords\CanResetPassword模型。

所以您需要做的就是创建自己的重置通知并覆盖App\User模型上的sendPasswordResetNotification方法,如下所示:

User

修改php artisan make:notification MyResetPasswordNotification

app/Notifications/MyResetPasswordNotification.php

然后将其添加到<?php namespace App\Notifications; use Illuminate\Notifications\Messages\MailMessage; class MyResetPasswordNotification extends \Illuminate\Auth\Notifications\ResetPassword { /** * Build the mail representation of the notification. * * @param mixed $notifiable * @return \Illuminate\Notifications\Messages\MailMessage */ public function toMail($notifiable) { return (new MailMessage) ->line('You are receiving this email because we received a password reset request for your account.') ->action('Reset Password', url('YOUR URL', $this->token)) ->line('If you did not request a password reset, no further action is required.'); } }

app/User.php

当然,您需要创建自己的路线,就像您在问题中写的那样,您也必须更改刀片视图。