Обработка post-запроса со страницы регистрации пользователяМожно пример небольшой, реализации идеи?
$form = new UserForm();
$form->setValidationGroup(FormInterface::VALIDATE_ALL); // Валидировать все поля
$form->setData($this->getRequest()->getPost());
if ($form->isValid()) {
$data = $form->getData();
}
$form = new UserForm();
$form->setValidationGroup('firstname', 'lastname'); // Валидировать только имя и фамилию
$form->setData($this->getRequest()->getPost());
if ($form->isValid()) {
$data = $form->getData(); //$data будет содержать только значения firstname и lastname
}
да, именно такstwa, кажется понял, у вас есть класс UserForm и там содержатся все правила валидации,
и когда приходят данные (неважно откуда) вы помещаете их в UserFrom, а он может возвращать валидный объект user,
Если так, то неплохо вроде должно получатся...
если в метод setValidationGroup передана константа FormInterface::VALIDATE_ALL, то будут валидироваться все поля, которые есть в моделе на момент вызова метода isValidили как?
Вряд ли такой вариант прокатит, потому что если на странице регистрации может прийти запрос в котором капча будет и не введена (isset($_POST['capthca']) === false), а значит если будет FormInterface::VALIDATE_ALL, то капча валидироваться не будет, так как в модель не была передана капча, верно?если в метод setValidationGroup передана константа FormInterface::VALIDATE_ALL, то будут валидироваться все поля, которые есть в моделе на момент вызова метода isValid
почему не будет? будет, то капча валидироваться не будет, так как в модель не была передана капча, верно?
$form->removeElement('captcha');
var_dump($form->getElement('captcha'))
1) А я хочу на русском языке сообщение показать, а не на английском. Что мне делать?fixxxer, хранить текст ошибки в представлении, как то это не совсем правильно, ведь удалится одно из правил валидации, или наоборот добавится, то придется править все view где прописаны эти ошибки, другое дело если для одной и той же ошибки разный вывод, но лучше уж в контроллер тогда, а если нет то лучше все таки в модель, как мне кажется..
1)
Что мне делать?
$form->getValidator('validatorName')->setMessage('бла-бла-бла', Validator::ERROR_CODE);
Правильно, если я введу какое-то дополнительное поле, которое не должно обрабатываться в экшене регистрации, то я изменю в контролере экшен регистрации и заменю FormInterface::VALIDATE_ALL перечислением полей, которые относятся только к регистрацииstwa
Правильно?
$form->getValidator('validatorName')->setMessage(
$this->intl->translate('signup_username_not_found', array(
'username' => $form->username,
'signup_link' => $this->Router->buildUrl('signup')
)),
Validator::ERROR_CODE
);
То есть мне надо брать сообщения от переводчика на 100500 языков и ручками копипастить в модели?В модели прописываем сообщения ошибок на каком угодно языке...
Не совсем понимаю о чем вы.То есть мне надо брать сообщения от переводчика на 100500 языков и ручками копипастить в модели?