2016-11-13 19 views
10

Jestem początkujący w Laravel. Obecnie uczę się tej struktury. Moja aktualna wersja Laravel ma 5.3.Jak zmienić temat e-mail do hasła resetowania hasła w laravel?

Jestem rusztowania mój autor za pomocą php artisan make:auth Wszystkie działają poprawnie. Również skonfigurowałem gmail smtp w moim pliku .env oraz mail.php w configgory. Wszystkie działają doskonale. Ale widziałem domyślnie, że temat wiadomości e-mail z zapomnianym hasłem zmienił się na Reset Password. Chcę to zmienić.

Widziałem bloga. Znalazłem bloga. Mam to zaimplementować w mojej witrynie. Ale nadchodzi ta sama wydajność.

Śledziłem te linki -

https://laracasts.com/discuss/channels/general-discussion/laravel-5-password-reset-link-subject

https://laracasts.com/discuss/channels/general-discussion/reset-password-email-subject

https://laracasts.com/discuss/channels/laravel/how-to-override-message-in-sendresetlinkemail-in-forgotpasswordcontroller

Odpowiedz

25

Możesz zmienić temat wiadomości e-mail dotyczącej resetowania hasła, ale będzie to wymagało dodatkowej pracy. Najpierw musisz utworzyć własną implementację powiadomienia o ResetPassword.

Utwórz nową klasę powiadamiania wewnątrz app\Notifications katalogu, niech nazwał ją ResetPassword.php:

<?php 

namespace App\Notifications; 

use Illuminate\Notifications\Notification; 
use Illuminate\Notifications\Messages\MailMessage; 

class ResetPassword extends Notification 
{ 
    public $token; 

    public function __construct($token) 
    { 
     $this->token = $token; 
    } 

    public function via($notifiable) 
    { 
     return ['mail']; 
    } 

    public function toMail($notifiable) 
    { 
     return (new MailMessage) 
      ->subject('Your Reset Password Subject Here') 
      ->line('You are receiving this email because we received a password reset request for your account.') 
      ->action('Reset Password', url('password/reset', $this->token)) 
      ->line('If you did not request a password reset, no further action is required.'); 
    } 
} 

Można również wygenerować szablon powiadamiania za pomocą polecenia rzemieślnik:

php artisan make:notification ResetPassword 

Albo można po prostu skopiować i wkleić powyższy kod. Jak można zauważyć, ta klasa powiadomień jest podobna do domyślnej wartości Illuminate\Auth\Notifications\ResetPassword. Możesz po prostu rozszerzyć go z domyślnej klasy ResetPassword.

Jedyną różnicą jest tu, dodać nową wywołanie metody do zdefiniowania tematu wiadomości e-mail na:

return (new MailMessage) 
     ->subject('Your Reset Password Subject Here') 

Możesz przeczytać więcej o Mail Notifications here.

Po drugie, w Twoim pliku musisz zastąpić domyślną metodę sendPasswordResetNotification() zdefiniowaną przez Illuminate\Auth\Passwords\CanResetPassword cechę. Teraz należy użyć własnego ResetPassword realizacji:

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
use App\Notifications\ResetPassword as ResetPasswordNotification; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    ... 

    public function sendPasswordResetNotification($token) 
    { 
     // Your your own implementation. 
     $this->notify(new ResetPasswordNotification($token)); 
    } 
} 

a teraz swoją resetowania hasła email Temat powinien być na bieżąco!

Reset password email subject updated

Nadzieja to pomaga!

+0

i jak możemy zmienić zdanie na temat Laravel i Laravel. – Steve

+1

@Steve Przejdź do config/app.php i zmień nazwę aplikacji – kniteli

1

można łatwo modyfikować klasę powiadomień używany wysłać link do resetowania hasła użytkownika. Aby rozpocząć, zastąp metodę sendPasswordResetNotification w swoim modelu użytkownika. W ramach tej metody możesz wysłać powiadomienie za pomocą dowolnej wybranej klasy powiadomień. Hasło zresetować $token jest pierwszym argumentem otrzymane metodą, Patrz Doc for Customization

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

nadzieję, że to pomaga!

+0

o wiele prostsze niż akceptowane ..! –

2

Możesz utworzyć niestandardową funkcję, która utworzy token resetowania hasła w ten sposób.

$user = User::where('email', '[email protected]')->first(); 
$password_broker = app(PasswordBroker::class); //so we can have dependency injection 
$token = $password_broker->createToken($user); //create reset password token 
$password_broker->emailResetLink($user, $token, function (Message $message) { 
     $message->subject('Custom Email title'); 
});//send email. 
0

Wystarczy dodać linię:

-> Temat ('New Subjetc')

w zastosowano metodę toMail pliku Illuminate \ Auth \ Powiadomienia \ ResetPassword tak:

public function toMail($notifiable) 
{ 
    return (new MailMessage) 
     ->subject('New Subjetc') 
     ->line('You are receiving this email because we received a password reset request for your account.') 
     ->action('Restaurar Contraseña', url(config('app.url').route('password.reset', $this->token, false))) 
     ->line('If you did not request a password reset, no further action is required.'); 
}