Я ищу несколько примеров того, как люди реализуют логику проверки в Zend Framework.
Моя идеальная реализация сохраняла бы проверку вне контроллера и позволяла проверять поля «Подтверждение пароля» и загрузки файлов.






Вы используете Zend_Form для своих форм? Я обычно использую валидаторы в форме для каждого Zend_Form_Element. Вот как я это делаю:
class Form_Login extends Zend_Form
{
public function init() {
$this->setMethod('post');
$validator = new Zend_Validate_Regex('([A-Za-z0-9]+)');
$validator->setMessage(
'Your username can only contain letters, numbers and underscores (_).');
$username = new Zend_Form_Element_Text('username');
$username->setLabel('Your Username');
$username->setDescription('The username you use to login');
$username->setAllowEmpty(false);
$username->setRequired(true);
$username->addValidator($validator);
$submit = new Zend_Form_Submit('login');
$submit->setLabel('Login');
$this->addElements(array($username, $submit));
}
}
(Настройка сообщений об ошибках)
А затем в вашем контроллере:
// $form is an instance of the extended Zend_Form
if (!$form->isValid()) {
$validator->getMessages()
// flashMessenger helpers or just simple view appends
}
My ideal implementation would keep the validation outside the controller and allow validating "Confirm password" fields and file uploads.
Я видел упоминание о валидаторах подтверждения паролей в справочнике (но сейчас не могу их найти, обычно), но найти такой в Google должно быть легко.
Для загрузки файлов обязательно потребуется написать собственный валидатор.
Да, это рекомендуемый способ проверки данных. Спасибо! Хотелось бы увидеть больше примеров.
Когда дело доходит до HTML, я как бы помешан на контроле, поэтому стараюсь держаться подальше от Zend_Form. Я знаю, что его можно сильно настроить, но я помню, как в какой-то момент столкнулся с препятствием, поэтому я решил придерживаться простых HTML-форм.
У меня была такая же проблема, пока я не нашел это: zendframework.com/manual/en/… Напишите отображение формы в HTML вместо того, чтобы позволить декораторам делать работу за вас.
Возможно, у вас должен быть смотреть на. Мэтью Вейер О'Финни (один из основных разработчиков Zend Fraework) демонстрирует подход, к которому нужно привыкнуть, но на него стоит взглянуть.
В частности, для проверки типа «подтверждение пароля» ознакомьтесь с Zym Framework (расширение Zend Framework). Для этой цели он имеет встроенный валидатор. Попробуйте класс Zym_Validate_Confirm.
У меня были небольшие проблемы с декораторами Zend_Form (и все еще есть), но я только что научился их преодолевать, правильно оформляя dl / dd / dt :)