代码之家  ›  专栏  ›  技术社区  ›  B Faley

10月CMS:如何使用户模型具有可报告性?

  •  0
  • B Faley  · 技术社区  · 8 年前

    这个 RainLab\User\Models\User 类不使用 Notifiable 因此无法调用 notify Notification::send 在上面。我想写一个插件来扩展 RainLab \用户\模型\用户 并添加 应申报的 它的特点。我该怎么做?

    1 回复  |  直到 8 年前
        1
  •  4
  •   CptMeatball    8 年前

    我将这种特质作为一种行为来实现: https://github.com/CptMeatball/notifiable-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';
        });
    }
    

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