2016-09-05 10 views
11

Jak dostosować ścieżkę szablonu e-maila resetowania w programie Laravel 5.3?Laravel 5.3 Ponownie zdefiniuj szablon ostrza e-mail do resetowania

Szablon używany jest: vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php

Chciałbym zbudować własną rękę.

Ponadto, jak zmienić tekst tego maila predefiniowanego w: vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php

public function toMail() 
{ 
    return (new MailMessage) 
     ->line([ 
      'You are receiving this email because we received a password reset request for your account.', 
      'Click the button below to reset your password:', 
     ]) 
     ->action('Reset Password', url('password/reset', $this->token)) 
     ->line('If you did not request a password reset, no further action is required.'); 
} 

Odpowiedz

28

Aby zmienić szablon, należy użyć polecenia rzemieślnik php artisan vendor:publish będzie tworzyć szablony kasetowych w katalogu resources/views/vendor. Aby zmienić tekst wiadomości e-mail, należy przesłonić metodę sendPasswordResetNotification w swoim modelu użytkownika. Jest to opisane tutaj: https://laravel.com/docs/5.3/passwords w Resetowanie e-mail Customization sekcja.

Musisz dodać nową metodę do swojego modelu użytkownika.

public function sendPasswordResetNotification($token) 
{ 
    $this->notify(new ResetPasswordNotification($token)); 
} 

i użyj własnej klasy do powiadomienia zamiast ResetPasswordNotification.

AKTUALIZACJA: dla @ lewis4u życzenie

instrukcją krok po kroku:

  1. Aby utworzyć nową klasę powiadomień, należy użyć tej linii poleceń php artisan make:notification MyResetPassword. Utworzy nową klasę powiadomień "MyResetPassword" w katalogu app/Notifications.

  2. add use App\Notifications\MyResetPassword; do modelu użytkownika

  3. dodać nową metodę do modelu użytkownika.

    public function sendPasswordResetNotification($token) 
    { 
        $this->notify(new MyResetPassword($token)); 
    } 
    
  4. run php rzemieślnik komenda php artisan vendor:publish --tag=laravel-notifications Po uruchomieniu tego polecenia, szablony powiadomień mail będzie znajdować się w zasobach/views/dostawcy katalogu/powiadomień.

  5. Edytuj swoją metodę MyResetPassword klasy toMail(), jeśli chcesz. To jest opisane tutaj https://laravel.com/docs/5.3/notifications

  6. Edytuj swój szablon ostrza e-mail, jeśli chcesz. To resources/views/vendor/notifications/email.blade.php

Bonus: Laracast wideo: https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/9

PS: Dzięki @ Garric15 za sugestią o php artisan make:notification

+1

Ponadto, aby utworzyć nową klasę powiadomień, należy użyć tego wiersza polecenia ' php rzemieślnik make: powiadomienie MyOwnResetPassword' [Więcej tutaj] (https://laracasts.com/discuss/channels/laravel/how-to-override-message-in-sendresetlinkemail-in-forgotpasswordcontroller#reply-183598) – Garric15

8

Chciałem rozwinąć bardzo pomocny Eugen’s answer, ale nie mają wystarczająco reputacja, aby zostawić komentarz.

Jeśli chcesz mieć własną strukturę katalogów, nie musisz używać szablonów ostrzy opublikowanych pod numerem views/vendor/notifications/...Podczas tworzenia nowej klasy powiadomienie i zacząć budować swoją klasę MailMessage, ma view() metody, które można wykorzystać, aby zastąpić domyślne widoki:

/** 
* Get the mail representation of the notification. 
* 
* @param mixed $notifiable 
* @return \Illuminate\Notifications\Messages\MailMessage 
*/ 
public function toMail($notifiable) 
{ 
    return (new MailMessage) 
     ->view('emails.password_reset'); 
     // resources/views/emails/password_reset.blade.php will be used instead. 
} 
+0

DZIĘKUJEMY! Zmarnowany przez całą noc, próbując to rozgryźć i to było takie proste .. pff .... –

Powiązane problemy