как можно добавить валидатор в модель уже после ее создания?
сценарии не подходят, так как на этапе описания не известно что нужно валидировать
отдельные валидаторы ($validator = new ...; $validator->validateAttribute() ) не хочется использовать, потому что они не добавят клиентскую валидацию
есть у модели публичный параметр validators, но в документации он указан как read-only
http://www.yiiframework.com/doc-2.0/yii ... ors-detail
через него нормально все работает, но есть ли какие то последствия, от использования его так:
$model->validators[] = new Validator();
?
Динамически добавить валидатор в модель
- MetalGuardian
- Сообщения: 208
- Зарегистрирован: 2011.03.06, 02:42
- Откуда: Киев
Re: Динамически добавить валидатор в модель
https://github.com/yiisoft/yii2/blob/ma ... l.php#L155
вам надо динамичесвую форму, а так да добавить нельзя, только из rules берется
вам надо динамичесвую форму, а так да добавить нельзя, только из rules берется
Re: Динамически добавить валидатор в модель
наврал я, да вы правы вы получите массив объектов и можете их менять
Because this method returns an ArrayObject object, you may manipulate it by inserting or removing validators (useful in model behaviors). For example,
$model->validators[] = $newValidator;
Because this method returns an ArrayObject object, you may manipulate it by inserting or removing validators (useful in model behaviors). For example,
$model->validators[] = $newValidator;
Re: Динамически добавить валидатор в модель
Только забыли пример добавить:
Не забывайте при создании валидатора создавать его сразу для нужной вам модели, а после этого надо ее добавить в массив $model->validators[]
Код: Выделить всё
$newValidator = Validator::createValidator('required', $model, ['elem']);
$model->validators[] = $newValidator;