【问题标题】:Laravel - How to display Username in Password Reset Notifications EmailLaravel - 如何在密码重置通知电子邮件中显示用户名
【发布时间】:2020-02-14 05:04:03
【问题描述】:

我正在做一个项目,使用 Laravel-5.8 作为后端,Angular-7 作为前端。我正在向用户发送密码重置电子邮件通知。目前,我有:

密码重置控制器.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!'
        ]);
    }

应用\通知\密码重置:

<?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 通知邮件的开头如下:

你好!

我想改成

你好所罗门!

我如何做到这一点?

【问题讨论】:

    标签: laravel


    【解决方案1】:

    您可以从控制器传递变量。

    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.');
    }
    

    【讨论】:

      【解决方案2】:

      通过使用

      $user->notify(
          new PasswordResetRequest($passwordReset->token)
      );
      

      toMail 中的$notifiable 变量是用户模型的对象,因此您可以在邮件中显示用户名。

      只需添加一个 chaned -&gt;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.');
      

      【讨论】:

        【解决方案3】:

        根据docs,您可以将-&gt;greeting('Hello!') 放在您的toMail 方法中。您可以将用户详细信息传递给此类并在 greeting 方法中显示用户名

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-03-13
          • 2016-09-25
          • 1970-01-01
          • 2015-02-28
          • 1970-01-01
          • 1970-01-01
          • 2019-03-11
          相关资源
          最近更新 更多