2016-11-13 15 views
10

Ben laravel içinde acemi değilim. Şu anda bu çerçeveyi öğreniyorum. Benim Laraent versiyonum 5.3.Laravel'de şifre sıfırlama e-postası konusu nasıl değiştirilir?

Ben tüm iyi çalışıyor php artisan make:auth kullanarak benim kimlik doğrulama iskele ediyorum. Ayrıca .env dosyasında gmail smtp ve config directgory'de mail.php dosyasını yapılandırdım. Hepsi mükemmel çalışıyor. Ama unuttum şifre e-posta konusu Reset Password gidiyor yan varsayılan gördü. Bunu değiştirmek istiyorum.

bazı blog gördüm. Bir blog buldum. Bunu sitemde uygularım. Ama aynı çıkış geliyor.

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

cevap

25

Parola sıfırlama e-postanızı değiştirebilir, ancak birazdan çalışmaya gerek duyarsınız. Öncelikle, ResetPassword bildirimin kendi uygulaması oluşturmanız gerekir.

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

Ayrıca esnaf komutunu kullanarak bildirim şablonu oluşturabilir:

hadi ResetPassword.php adında izin app\Notifications dizinde içinde yeni bildirim sınıf oluşturun

php artisan make:notification ResetPassword 

Veya sadece kopyala-yapıştır yapabilirsiniz Yukarıdaki kod. Fark edeceğiniz gibi bu bildirim sınıfı varsayılan Illuminate\Auth\Notifications\ResetPassword ile oldukça benzer. Aslında sadece varsayılan ResetPassword sınıftan uzatabilirsiniz.

Tek fark burada, sizi e-postanın konusunu tanımlamak için yeni bir yöntem çağrısı ekleyin:

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

Sen Mail Notifications here hakkında daha fazla okuyabilirsiniz.

İkincisi, sizin app\User.php dosyanızda, Illuminate\Auth\Passwords\CanResetPassword özelliğiyle tanımlanmış varsayılan sendPasswordResetNotification() yöntemini geçersiz kılmanız gerekir.

<?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)); 
    } 
} 

Ve şimdi şifre sıfırlama e-posta konusu güncellenmesi gerekir: Şimdi kendi ResetPassword uygulaması kullanmalısınız!

Reset password email subject updated

Umut bu yardım!

+0

ve üstte yazılan Laravel ve Laravel konularını nasıl değiştirebiliriz? – Steve

+1

@Steve Config/app.php adresine gidin ve uygulama adını değiştirin – kniteli

1

Kolayca kullanıcıya şifre sıfırlama bağlantısını göndermek için kullanılan bildirim sınıfı değiştirebilir -

Ben bu bağlantıları takip etti. Başlamak için, Kullanıcı modeline sendPasswordResetNotification yöntemini geçersiz. Bu yöntemde, bildirimi seçtiğiniz herhangi bir bildirim sınıfını kullanarak gönderebilirsiniz. şifre $token sıfırlama yöntemiyle alınan ilk argümanı, bu yardımcı olur Doc for Customization

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

Umut bakın!

+0

çok daha kolay kabul edilen biri ..! –

2

Böyle şifre sıfırlama belirteci yaratacak özel bir işlev oluşturabilirsiniz.

$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

Sadece satırı ekleyin: -

dosyası Illuminate \ Auth \ Bildirimler yöntemi toMail \ ResetPassword böyle yılında> konuyu ('Yeni Subjetc')

:

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