Валидация с зависимостью

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Валидация с зависимостью

Сообщение Stamm »

Хотелось бы в валидаторе формы получить новый параметр типа 'if'.
Например у меня есть форма с двумя радио-кнопками.
По переключению показывается блок разных полей, которые обязательны к заполнению только при выборе своего радио-баттона. Также существует множество общих полей.
Можно это решить и сейчас, но нужно прописывать руками все стандартные валидаторы и вручную прописывать ошибки, что довольно таки утомительно и код получается не очевидным.

Может что-то такого сделать?

Код: Выделить всё

array('first_type, first_html', 'required', 'if' => function($model) { return $model->radioButton == '1' }), 
array('second_subject, second_timeout', 'required', 'if' => function($model) { return $model->radioButton == '2' }), 
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Валидация с зависимостью

Сообщение Stamm »

Волшебство такое-то. Только написал, появилось
http://www.yiiframework.com/extension/switch-validator/
DropSQL
Сообщения: 102
Зарегистрирован: 2010.02.19, 22:20
Откуда: Киев

Re: Валидация с зависимостью

Сообщение DropSQL »

а можно плз пример как юзать это расширение? http://www.yiiframework.com/extension/switch-validator/
что-то не особо понятно
Аватара пользователя
Stamm
Сообщения: 407
Зарегистрирован: 2010.03.14, 18:59
Откуда: Россия, Москва
Контактная информация:

Re: Валидация с зависимостью

Сообщение Stamm »

Я пока код не смотрел, но думаю, что это работает так.
Например есть две формы: добавить фотку, добавить видео.
В обоих формах есть параметр: название, тэги, видимый/не видимый.
Есть 2 разных экшена для добавления фотки и добавлении видео.
Чтобы не реализовывать две разные формы с дублированием валидаторов, для этих экшенов используется используется одна форма, и перед валидацией проставляется поле $model->type в 'image' или 'video'.
И уже в валидацию добавляются специфичные для данной формы валидаторы.
Ответить