我正在使用Laravel-5.8作为后端而Angular-7作为前端的项目中。我正在向用户发送用于密码重置的电子邮件通知。当前,我有:
PasswordResetController.php
public function create(Request $request)
{
$request->validate([
'email' => 'required|string|email',
]);
$user = User::where('email', $request->email)->first();
if (!$user)
return response()->json([
'message' => 'We can\'t find a user with that e-mail address.'
], 404);
$passwordReset = PasswordReset::updateOrCreate(
['email' => $user->email],
[
'email' => $user->email,
'token' => str_random(60)
]
);
if ($user && $passwordReset)
$user->notify(
new PasswordResetRequest($passwordReset->token)
);
return response()->json([
'message' => 'We have e-mailed your password reset link!'
]);
}
App \ Notifications \ PasswordReset:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class PasswordResetRequest extends Notification
{
use Queueable;
protected $token;
public function __construct($token)
{
$this->token = $token;
}
public function via($notifiable)
{
return ['mail'];
}
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('http://localhost:4200/#/reset-password-submit?token='.$this->token))
->line('If you did not request a password reset, no further action is required.');
}
public function toArray($notifiable)
{
return [
//
];
}
}
用户表中的字段是:
名字,姓氏,电子邮件,密码
我正在尝试在密码重设通知电子邮件中添加用户的名字。目前,Laravel通知电子邮件开始如下:
你好!
我想将其更改为
你好所罗门!
我该如何实现?
通过使用
$user->notify(
new PasswordResetRequest($passwordReset->token)
);
$notifiable
中的toMail
变量是用户模型的对象,因此您可以在邮件中显示用户名。
简单地添加一个经过修改的->greeting()
方法,以问候字符串作为参数进行漂亮的格式化
return (new MailMessage)
->greeting('Hello '.$notifiable->first_name.' '.$notifiable->last_name)
->line('You are receiving this email because we received a password reset request for your account.')
->action('Reset Password', url('http://localhost:4200/#/reset-password-submit?token='.$this->token))
->line('If you did not request a password reset, no further action is required.');
根据docs,您可以将->greeting('Hello!')
放在toMail
方法中。您可以将用户详细信息传递给此类,并在greeting
方法中显示用户名
您可以从控制器传递变量。
if ($user && $passwordReset)
$user->notify(
new PasswordResetRequest($passwordReset->token, $user)
);
然后您需要那样访问。(App\Notifications\PasswordReset:
)
protected $token;
protected $user;
public function __construct($token, $user)
{
$this->token = $token;
$this->user= $user;
}
public function toMail($notifiable)
{
return (new MailMessage)
->greeting('Hello '.$this->user->first_name.' '.$this->user->last_name)
->line('You are receiving this email because we received a password reset request for your account.')
->action('Reset Password', url('http://localhost:4200/#/reset-password-submit?token='.$this->token))
->line('If you did not request a password reset, no further action is required.');
}