RequiredNumberFromListValidator

На днях понадобился валидатор, который из списка атрибутов указывает количество атрибутов, которое обязательно для заполнения. Для этого расширил стандартный валидатор CRequiredValidator. По умолчанию количество обязательных полей равно 1.

Пример:
Допустим у нас в форме контактной информации пользователя есть телефон, факс и мобильный номер. Нам необходимо чтобы пользователь заполнил хотя бы одно из 3х полей. Для этого в правилах(rules) модели указываем:

array('mobile_phone, landline_phone, fax', 'RequiredFromListValidator'),

Теперь если один или более атрибутов из списка заполнены, то валидации пройдет успешно. Если нет, то будет сгенерировано стандартное сообщение CRequiredValidator. Это не совсем соответствует идеи валидатора, но я пока так и не смог решить, как лучше обрабатывать ошибки. Если у кого-то будут идеи, готов выслушать.

Примечание:
Не забывайте подключить валидатор в конфигурационном файле приложения или указывайте путь к файлу в правилах(rules) модели.

Код на гитхабе: https://github.com/SpiLLeR/blog-code/blob/master/RequiredNumberFromListValidator.php