2016-12-30 24 views
5

Tôi đã thực hiện lệnh laravel cho hệ thống xác thực, php artisan make:auth nó đã tạo hệ thống xác thực cho ứng dụng của tôi và hầu như mọi thứ đều hoạt động.thay thế mẫu thư đặt lại mật khẩu bằng mẫu tùy chỉnh laravel 5.3

Bây giờ khi tôi sử dụng mật khẩu đã quên và nó gửi cho tôi một mã thông báo cho id thư của tôi, tôi thấy rằng mẫu chứa laravel và một số thứ khác mà tôi có thể muốn chỉnh sửa hoặc ommit, chính xác, tôi muốn mẫu tùy chỉnh của tôi được sử dụng ở đó.

Tôi đã tra cứu bộ điều khiển và tệp nguồn nhưng tôi không thể tìm thấy mẫu hoặc mã hiển thị html trong thư.

Tôi làm như thế nào?

Làm cách nào để thay đổi?

Đây là mẫu mặc định xuất phát từ laravel đến thư. enter image description here

Trả lời

4

Chạy lệnh sau trong thiết bị đầu cuối và hai mẫu email sẽ được sao chép vào thư mục tài nguyên/nhà cung cấp/thông báo của bạn. Sau đó, bạn có thể sửa đổi các mẫu.

php artisan vendor:publish --tag=laravel-notifications 

Bạn có thể đọc thêm về Notifications trong Laravel Docs.

+0

Email mẫu sẽ được bên trong nguồn/views/vendor/thư mục thông báo. – KCP

+0

Tôi nghĩ câu trả lời hoàn chỉnh là https://stackoverflow.com/a/41401524/2144424 – jpussacq

7

Chỉ cần một người đứng đầu lên: Ngoài các câu trả lời trước, có những bước bổ sung nếu bạn muốn thay đổi các dòng thông báo như You are receiving this..., vv Dưới đây là một hướng dẫn từng bước.

Bạn cần phải override the defaultsendPasswordResetNotification phương pháp trên mô hình User của mình.

Tại sao? Bởi vì các đường được kéo từ Illuminate\Auth\Notifications\ResetPassword.php. Sửa đổi nó trong lõi sẽ có nghĩa là những thay đổi của bạn bị mất trong quá trình cập nhật Laravel.

Để thực hiện việc này, hãy thêm thông tin sau vào mẫu User của bạn.

use App\Notifications\PasswordReset; // Or the location that you store your notifications (this is default). 

/** 
* Send the password reset notification. 
* 
* @param string $token 
* @return void 
*/ 
public function sendPasswordResetNotification($token) 
{ 
    $this->notify(new PasswordReset($token)); 
} 

Cuối cùng, create that notification:

php artisan make:notification PasswordReset 

Và ví dụ về nội dung của thông báo này:

/** 
* The password reset token. 
* 
* @var string 
*/ 
public $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']; 
} 

/** 
* 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.') // Here are the lines you can safely override 
     ->action('Reset Password', url('password/reset', $this->token)) 
     ->line('If you did not request a password reset, no further action is required.'); 
} 
+1

Cảm ơn bạn. Đây là câu trả lời hoàn chỉnh. Tôi cần thêm dòng sau -> subject ('chủ đề tùy chỉnh của bạn') để thay đổi chủ đề của email. Cảm ơn rất nhiều. – jpussacq

0

Bạn cũng có thể đạt được điều này bằng cách xây dựng mẫu email của chính bạn và gửi Reset liên kết bản thân sử dụng php mail() hoặc hoặc Laravel Mail Facade nhưng trước tiên bạn cần phải tạo mã thông báo đặt lại

1) use Illuminate\Contracts\Auth\PasswordBroker;

$user = User::where('email', $email)->first(); 
       if ($user) { 
        //so we can have dependency 
        $password_broker = app(PasswordBroker::class); 
        //create reset password token 
        $token = $password_broker->createToken($user); 

        DB::table('password_resets')->insert(['email' => $user->email, 'token' => $token, 'created_at' => new Carbon]); 

//Send the reset token with your own template 
//It can be like $link = url('/').'/password/reset/'.$token; 

       } 
Các vấn đề liên quan