2017-01-25 4 views
0

Я перехожу от laravel 5.2 до 5.3, и я хотел бы отправить пользовательский текст, когда пользователь хочет сбросить свой пароль. Теперь я вижу уведомления об использовании laravel, а «тема» по умолчанию жестко закодирована в ядре laravel. У меня уже есть представление для этого (из 5.2) и уведомлений могут использовать пользовательский вид, поэтому я попытался это:Переместить переменную в вид уведомления на laravel

В User.php (модель)

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

Я создаю мое уведомление «SendLinkMailPasswordReset» для «переопределения» Laravel один и вот мой метод toMail():

/** 
    * Get the mail representation of the notification. 
    * 
    * @param mixed $notifiable 
    * @return \Illuminate\Notifications\Messages\MailMessage 
    */ 
    public function toMail($notifiable) 
    { 
     return (new MailMessage) 
        ->view('auth.emails.password') 
        ->with 
        (
         [ 
          'user'=> $this->full_name, 
          'token'=> $this->token, 
         ] 
        ); 
    } 

Если я делаю dd($this->full_name), он работает, но когда я восстановить свой пароль я получаю Undefined variable: user

Не знаю, подходит ли with или если я хотел бы сделать это. Для получения дополнительной информации, если я делаю это в моем sendPasswordResetNotification

public function sendPasswordResetNotification($token) 
    { 
     $to=$this->email; 
     $user= $this; 

     Mail::send('auth.emails.password', ['user'=>$user, 'token'=>$token], function($message) use ($to) { 
      $message->to($to)->subject('Reset your password'); 
     }); 

    } 

Он работает. Мое использование уведомлений - это хорошо или в моем случае я должен направить почту вместо этого?

+0

с только будет до следующего запроса. он использует флэш-сеанс – Vikash

+0

спасибо за ваш ответ. когда я читаю docs https://laravel.com/api/5.3/Illuminate/Notifications/Messages/MailMessage.html#method_with, он сказал: «Добавить строку текста в уведомление». поэтому я использовал его. Знаете ли вы другой метод? – sam12

ответ

3

Попробуйте этот

$user = $this->full_name; 
$token = $this->token; 

return (new MailMessage) 
       ->view('auth.emails.password', compact('user','token')); 

доступа к данным в поле зрения как

{{ $user }} 
{{ $token }} 
+0

ahah хороший, он работает, спасибо – sam12

Смежные вопросы