我正在从laravel 5.2迁移到5.3,并且当用户想要重置密码时我想发送自定义文本。 我现在看到,laravel使用通知,并且默认的“主题”在laravel核心中是硬编码的。 我已经有了这个视图(从5.2开始),通知可以使用自定义视图,所以我尝试了这个:
在User.php(模型)中
/**
* Send the password reset notification.
*
* @param string $token
* @return void
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new SendLinkMailPasswordReset($token, $this->full_name));
}
我创建了我的通知“SendLinkMailPasswordReset”,用于“覆盖”laravel one和这里的toMail()方法:
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->view('auth.emails.password')
->with
(
[
'user'=> $this->full_name,
'token'=> $this->token,
]
);
}
如果我执行dd($this->full_name)
,它可以正常工作,但当我重置密码时,我会Undefined variable: user
我不知道with
是否是正确的方法,或者我是否愿意做。
有关信息,请参阅我的sendPasswordResetNotification
public function sendPasswordResetNotification($token)
{
$to=$this->email;
$user= $this;
Mail::send('auth.emails.password', ['user'=>$user, 'token'=>$token], function($message) use ($to) {
$message->to($to)->subject('Reset your password');
} );
}
有效。我对通知的使用是好还是在我的情况下我应该推送邮件?
答案 0 :(得分:6)
试试这个
$user = $this->full_name;
$token = $this->token;
return (new MailMessage)
->view('auth.emails.password', compact('user','token'));
访问视图中的数据,如
{{ $user }}
{{ $token }}
答案 1 :(得分:-1)
另一方面,我们可以使用$viewData
属性(https://laravel.com/api/5.3/Illuminate/Notifications/Messages/MailMessage.html):
$viewData= [
'user'=>$this->full_name,
'token'=>$this->token
];