Как должен черты быть добавлены в существующую модель при расширении плагинов?
Я попробовал следующее с RainLab.User плагин:
UserModel::extend(function($model) {
$model->implement[] = 'October.Rain.Database.Trait.Nullable';
$model->nullable[] = 'company';
});
И получил эту ошибку:
Косвенная модификация перегруженного свойства RainLab \ User \ Models \ User :: $ nullable не имеет никакого эффекта
Вы не можете динамически расширять класс, используя Черты. Вы должны использовать поведения вместо этого или (в зависимости от того, что вам нужно сделать с расширенной моделью) расширьте класс модели вашим собственным классом модели, а затем добавьте Trait к этой пользовательской модели.
Возможно, самым простым способом было бы реализовать Nullable Trait как пользовательское поведение в вашем плагине, а затем расширить класс модели с помощью Nullable Behavior.
Если вы хотите, вы также можете отправить запрос функции (через проблемы) в хранилище просить кого-то реализовать черты базы данных как поведения, упрощающие подобные расширения в будущем.
Других решений пока нет …