Переопределение атрибута «электронная почта» в Notifiable Trait Laravel - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь использовать Notifiable Trait of Laravel в модели, у которой нет атрибута email (фактически он payer_email )

поэтому я углубился в код уведомлений и обнаружил, что он использует routeNotificationFor метод из RoutesNotifications черта, поэтому я решил переопределить его для желаемого поведения.

Исходный код метода:

    public function routeNotificationFor($driver)
{
    if (method_exists($this, $method = 'routeNotificationFor'.Str::studly($driver))) {
        return $this->{$method}();
    }

    switch ($driver) {
        case 'database':
            return $this->notifications();
        case 'mail':
            return $this->email;
        case 'nexmo':
            return $this->phone_number;
    }
}

, и я переопределил его в моей Платежной модели следующим образом:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
use Illuminate\Notifications\Notifiable;
use App\Notifications\PaymentNotify;

class Payment extends Model
{

    use Notifiable;

    public function routeNotificationFor($driver)
    {
       if (method_exists($this, $method = 'routeNotificationFor'.Str::studly($driver))) {
           return $this->{$method}();
       }

       switch ($driver) {
            case 'database':
                return $this->notifications();
            case 'mail':
                return $this->payer_email;
            case 'nexmo':
                return $this->phone_number;
       }
    }
}

Но когда япроверить это, не работает.(Я использовал черту Notifiable на двух других моделях, и она работает, без переопределения ...)

1 Ответ

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

Я только что создал метод с именем routeNotificationForMail , как предложил @Jonathon, и я работал как заслуженный.

public function routeNotificationForMail(){
    return $this->payer_email;
}

Благодаря ему, чтобы открыть мои глаза, я тонул в стакане воды...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...