Страницы

Поиск по вопросам

четверг, 21 марта 2019 г.

Phalcon и валидация форм

Все привет. Кто сталкивался с компонентом 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, если вы уже в самой задаче бьете ее на два этапа? Валидация одна, этапов два. Хотя объектов валидации будет два, наверное, мне лень было так глубоко лезть

Комментариев нет:

Отправить комментарий