Не удается отправить уведомление в Laravel (отсутствие метода via () в MailMessage) - PullRequest
0 голосов
/ 14 сентября 2018

Вот мой код:

namespace App;

use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notifiable;

class Customer extends Model
{
    use Notifiable;

    public function sendPasswordResetNotification($token)
    {
        $mail =  (new MailMessage)
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', url(config('app.url').route('password.reset', $token, false)))
            ->line('If you did not request a password reset, no further  action is required.');

        $this->notify($mail);
    }


}

Когда я пытаюсь запустить его, я получаю сообщение об ошибке: вызов неопределенного метода Illuminate \ Notifications \ Messages \ MailMessage :: via ()

Я понятия не имею, что я должен добавить сюда, чтобы это работало. Класс Customer имеет столбец электронной почты в базе данных, если это помогает.

1 Ответ

0 голосов
/ 15 сентября 2018

попробуйте этот код:

создайте класс sendPasswordResetNotification с помощью artisan

php artisan make:notification sendPasswordResetNotification

sendPasswordResetNotification class:

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class sendPasswordResetNotification extends Notification
{
    use Queueable;

    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'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        $mail =  (new MailMessage)
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', url(config('app.url').route('password.reset', $this->token, false)))
            ->line('If you did not request a password reset, no further  action is required.');
    }

}

Теперь модель вашего клиента выглядит следующим образом:

namespace App;

use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notifiable;
use App\Notifications\sendPasswordResetNotification;

class Customer extends Model
{
    use Notifiable;

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

}

второй способ отправки почты с помощью контроллера

Customer::find($id)->notify(new sendPasswordResetNotification($token));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...