Большинство валидаторов в Yii имеют свойство
allowEmpty, которое означает условие когда проверяемый атрибут может быть пустым. Исключением из этого большинства является
CRequiredValidator, у которого данного свойства нет. Вообще это логично, так как этот валидатор необходим, чтобы проверить обязательное присутствие значения, однако возникают ситуации когда обязательность того или иного атрибута зависит от внешних настроек. Я взял стандартный класс CRequiredValidator и добавил всего несколько строк кода, для реализации необходимого мне поведения.
Теперь я могу писать вот так (отрывок метода rules()):
....
array('verifyCode','YRequiredValidator','allowEmpty' => !Yii::app()->controller->module->showCaptcha),
....
Может данная возможность еще кому-нибудь пригодится.
скачать
исходный код
Юпи! — CMS на Yii – http://yupe.ru
Исходный код – https://github.com/yupe/yupe
Присоединяйтесь!