0

该类RainLab\User\Models\User不使用该Notifiable特征,因此无法调用notifyNotification::send对其进行调用。我想编写一个插件来扩展RainLab\User\Models\User并为其添加Notifiable特征。我怎样才能做到这一点?

4

1 回答 1

4

我已经将该特征作为一种行为实现:https ://github.com/CptMeatball/notifiable-user

它是如何工作的?

该插件充当 Notifiable trait 的简单包装器,并将其作为行为添加到 User 模型中。它通过在行为类中插入特征来工作。然后在插件的引导方法期间将其添加到用户模型中。就那么简单。

可通知行为

use Illuminate\Notifications\Notifiable as NotifiableTrait;
class Notifiable extends \October\Rain\Database\ModelBehavior
{
    use NotifiableTrait;
    public function __call($name, $params = null)
    {
        if (!method_exists($this, $name) || !is_callable($this, $name)) {
            return call_user_func_array([$this->model, $name], $params);
        }
    }
}

插件.php

public function boot()
{
    User::extend(function($model) {
        $model->implement[] = 'CptMeatball.NotifiableUser.Behaviors.Notifiable';
    });
}

您可以对任何其他特征使用相同的原则。

于 2018-03-01T22:36:47.843 回答