Nếu bạn đang dùng thư viện laravel/ui để làm các chức năng liên quan đến authentication, và trong dự án của bạn, bạn cần thay đổi template email password reset thay vì sử dụng template email password reset mặc định của của laravel/ui. Vì vậy bài viết này, tôi sẽ hướng dẫn các bạn cách thay đổi template email password reset mặc định.
Đầu tiên, bạn hãy mở file User.php nằm trong thư mục app\Models và override function sendPasswordResetNotification như sau:
<?php
namespace App\Models;
...
use App\Notifications\ResetPasswordNotification;
class User extends Authenticatable implements MustVerifyEmail
{
...
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
}
Tiếp theo, chúng ta sẽ tạo ra một notification có tên là ResetPasswordNotification.php bằng lệnh command sau:
php artisan make:notification ResetPasswordNotification
Sau đó, bạn hãy mở file ResetPasswordNotification.php nằm trong thư mục app\Notifications và chỉnh sửa như sau:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class ResetPasswordNotification extends Notification
{
use Queueable;
private $_token;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($token)
{
$this->_token = $token;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = route('password.reset', ['token' => $this->_token,'email' => $notifiable->getEmailForPasswordReset()]);
return (new MailMessage)->view('emails.users.reset', ['url' => $url]);
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
Cuối cùng, bạn hãy tạo file reset.blade.php nằm trong thư mục resources\views\emails\users và có nội dung như sau:
ManhDanBlog Laravel UI Custom Email Password Reset Template <br>
URL: {{ $url }}
Đây là chính là nội dung template email password reset mới, bạn có thể thay đổi nội dung để phù hợp với dự án của bạn.
Như vậy là chúng ta đã làm xong việc thay đổi template email password reset mặc định rồi. Tôi hy vọng bạn thích hướng dẫn này. Nếu bạn có bất kỳ câu hỏi nào hãy liên hệ với chúng tôi qua trang contact. Cảm ơn bạn.