1

在扩展插件时应该如何将特征添加到现有模型中?

我用RainLab.User插件尝试了以下操作:

UserModel::extend(function($model) {
    $model->implement[] = 'October.Rain.Database.Trait.Nullable';
    $model->nullable[] = 'company';
});

并得到这个错误:

间接修改重载属性 RainLab\User\Models\User::$nullable 无效

4

1 回答 1

0

您不能使用 Traits 动态扩展类。您必须改用行为,或者(取决于您需要对扩展模型执行的操作)使用您自己的自定义模型类扩展模型类,然后将特征添加到该自定义模型。

最简单的方法可能是将 Nullable Trait 实现为插件中的自定义行为,然后使用您的 Nullable Behavior 扩展模型类。

如果您愿意,您还可以向存储库提交功能请求(通过问题),要求有人将数据库特征实现为行为,以简化将来的类似扩展。

于 2016-12-27T10:20:33.043 回答