Как показать только одно (например, первое) сообщение об ошибке в поле формы с Zend Framework, где проверка не прошла? - PullRequest
0 голосов
/ 23 марта 2011

Есть ли способ сделать это с помощью декоратора, или мне нужно копать глубже в ZF?

Ответы [ 3 ]

3 голосов
/ 23 марта 2011

Если у вас есть несколько валидаторов, прикрепленных к одному элементу формы, и вы хотите, чтобы всплыло только первое сообщение об ошибке, вы можете установить для параметра breakChainOnFailure значение ИСТИНА для каждого валидатора. В этом случае при сбое одного из валидаторов все последующие валидаторы пропускаются.

$element->addValidator(
             new Zend_Validate_StringLength(array('min' => 6, 'max' => 12)),
             true)
        ->addValidator(new Zend_Validate_Alnum());
0 голосов
/ 23 марта 2011

если $ foo находится в экземпляре Zend_Form и внутри этой формы есть имя пользователя элемента формы, то $foo->username->getMessages() ; вернет массив сообщений об ошибках, чтобы показать только одно, которое вам просто нужно сделать array_pop($foo->username->getMessages());.В основном Zend-декораторы используют отображение ошибок для отображения сообщений.Вам нужно расширить декоратор по умолчанию и удалить помощник вида просто на echo

0 голосов
/ 23 марта 2011

Есть много способов сделать это. Мой личный фаворит - расширить валидатор, который вы хотите использовать, чтобы вернуть только одно пользовательское сообщение. Для валидатора электронной почты это особенно полезно, так как показывает некоторые сумасшедшие сообщения об ошибках, которые вы, возможно, не захотите показывать в любом случае. Вы можете увидеть этот метод здесь: http://clintberry.com/2010/07/zend-form-email-validator-customizing-error-messages/

...