Где вы размещаете логику проверки при использовании Zend Framework?

Я ищу несколько примеров того, как люди реализуют логику проверки в Zend Framework.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
5 718
4

Ответы 4

Вы используете 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-форм.

У меня были небольшие проблемы с декораторами Zend_Form (и все еще есть), но я только что научился их преодолевать, правильно оформляя dl / dd / dt :)

Ross 05.01.2009 19:11

У меня была такая же проблема, пока я не нашел это: zendframework.com/manual/en/… Напишите отображение формы в HTML вместо того, чтобы позволить декораторам делать работу за вас.

Rob Booth 06.01.2009 03:42

Возможно, у вас должен быть смотреть на. Мэтью Вейер О'Финни (один из основных разработчиков Zend Fraework) демонстрирует подход, к которому нужно привыкнуть, но на него стоит взглянуть.

В частности, для проверки типа «подтверждение пароля» ознакомьтесь с Zym Framework (расширение Zend Framework). Для этой цели он имеет встроенный валидатор. Попробуйте класс Zym_Validate_Confirm.

Другие вопросы по теме