OctoberCMS:如何使用户模型可通知?
OctoberCMS: How to make the User model notifiable?
RainLab\User\Models\User
class 不使用 Notifiable
特性,因此无法对其调用 notify
或 Notification::send
。我想编写一个扩展 RainLab\User\Models\User
并向其添加 Notifiable
特征的插件。我该怎么做?
我已将特征作为一种行为实施:https://github.com/CptMeatball/notifiable-user
它是如何工作的?
此插件充当可通知特征的简单包装器,并将其作为行为添加到用户模型中。它通过在行为 class 中插入特征来工作。然后在插件的引导方法期间将其添加到用户模型。就这么简单。
NotifiableBehavior
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);
}
}
}
Plugin.php
public function boot()
{
User::extend(function($model) {
$model->implement[] = 'CptMeatball.NotifiableUser.Behaviors.Notifiable';
});
}
您可以对任何其他特征使用相同的原则。
RainLab\User\Models\User
class 不使用 Notifiable
特性,因此无法对其调用 notify
或 Notification::send
。我想编写一个扩展 RainLab\User\Models\User
并向其添加 Notifiable
特征的插件。我该怎么做?
我已将特征作为一种行为实施:https://github.com/CptMeatball/notifiable-user
它是如何工作的?
此插件充当可通知特征的简单包装器,并将其作为行为添加到用户模型中。它通过在行为 class 中插入特征来工作。然后在插件的引导方法期间将其添加到用户模型。就这么简单。
NotifiableBehavior
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);
}
}
}
Plugin.php
public function boot()
{
User::extend(function($model) {
$model->implement[] = 'CptMeatball.NotifiableUser.Behaviors.Notifiable';
});
}
您可以对任何其他特征使用相同的原则。