Все привет. Кто сталкивался с компонентом PhalconValidation? Я, прочитав документацию, не могу понять, как производить валидацию, набросал вот такой вот подход:
public function initialize()
{
$this->add('name', new PresenceOf(array(
'message' => 'Вы не заполнили Имя и Фамилию'
)));
$this->add('name', new RegexValidator(array(
'pattern' => '/^[а-яА-ЯёЁa-zA-Z-]+$/ui',
'message' => 'Имя и Фамилия могут содержать только буквы и тире'
)));
$this->add('name', new StringLength(array(
'max' => 50,
'min' => 5,
'messageMaximum' => 'Имя и Фамилия не может содержать больше 50 символов',
'messageMinimum' => 'Имя и Фамилия не может содержать меньше 5 символов'
)));
$this->add('email', new PresenceOf(array(
'message' => 'Вы не заполнили Email адрес'
)));
$this->add('email', new Email(array(
'message' => 'Не корректный Email адрес'
)));
$this->add('password', new PresenceOf(array(
'message' => 'Вы не заполнили Пароль'
)));
$this->add('password', new StringLength(array(
'min' => 8,
'minimumMessage' => 'Пароль не может быть короче 8 символов'
)));
$this->add('confirm', new PresenceOf(array(
'message' => 'Вы не заполнили Подтверждение пароля'
)));
$this->add('password', new Confirmation(array(
'message' => 'Пароли не совпадают',
'with' => 'confirm'
)));
}
Это неправильный подход, потому что если формы пустые, ошибки всплывают все, а не те, что проверяют форму на пустоту. Как исправить такое положение?
И да, если установить 'cancelOnFail' => true, то валидация не пройдёт дальше той валидации, которая имеет этот параметр первая в очереди.
UPD 06.11.14:
Приведу пример валидации.
Есть 4 поля, к примеру (имя/емэйл/пароль/и подтверждение пароля).
Первым делом валидация проверяет заполнены поля или нет, потом поэтапно каждое поле, то есть изначально он проверяет все поля на пустоту, а потом все поэтапно, и поля не связаны между собой, за исключением пароля, и его подтверждения. Как то так.
Ответ
В чем проблема производить валидацию в два этапа и считать сообщения по выходу с первого? Зачем нужен PresenceOf, если для этого поля уже работает StringLength/Confirmation/Email? Phalcon, конечно, фреймворк с прибабахом, и валидация должна идти по группам, приложение разбиваться по неймспейсам, а объявление всего и вся через анонимные функции - это откровенная laravel-блевня, но здесь-то и задачи как таковой не стоит. Обновление @Bastian, если вы уже в самой задаче бьете ее на два этапа? Валидация одна, этапов два. Хотя объектов валидации будет два, наверное, мне лень было так глубоко лезть
Комментариев нет:
Отправить комментарий