Yii2. Добавление атрибута и правила динамически в модель
Я пишу виджет и хочу, чтобы пользователь не добавлял код в свою модель (я знаю, что было бы проще, но использовать его для изучения чего-то нового).
Знаете ли вы, можно ли добавить в модель атрибут (которого нет в вашей базе данных, поэтому он будет виртуальным) и добавить правило для этого атрибута? У вас нет доступа для изменения кода модели.
Я знаю, правила это массив. В прошлом я объединял правила из родительского класса, используя array_merge. Можно ли это сделать внешне? Есть ли у Yii2 метод для этого?
Идея состоит в том, чтобы расширить модель, предоставленную пользователем, с помощью «модели» внутри моего виджета и использовать там:
public function init() {
/*Since it is extended this not even would be necessary,
I could declare the attribute as usual*/
$attribute = "categories";
$this->{$attribute} = null; //To create attribute on the fly
parent::init();
}
public function rules() {
$rules = [...];
//Then here merge parent rules with mine.
return array_merge(parent::rules, $rules);
}
Но если я расширю его, когда я использую эту модель в ActiveForm, например, для флажка, он будет использовать мою "CustomModel", поэтому я хочу избежать этого. Есть другие идеи? Как это сделать, не расширяя свою модель?