Zend_Form - Быстрый старт
Данное руководство охватывает основы создания форм,
проверки корректности данных и визуализиции с использованием
Создание объекта формы
Объекты форм создаются через простое инстанцирование
Для более сложных случаев использования вы можете создавать
подклассы
Если вы хотите указать атрибуты
Приведенный выше код устанавливает значение атрибута
Вы можете установить дополнительные HTML-атрибуты для тега
Добавление элементов в форму
Форма без элементов бесмысленна.
Есть два способа добавления элементов в форму - вы можете
инстанцировать нужные элементы и передавать их объекту формы, или
передавать только тип элемента, в этом случае Некоторые примеры:
По умолчанию элементы не имеют никаких валидаторов или фильтров. Это
означает, что вам нужно установить к своим элементам, как минимум,
валидаторы, и, возможно, фильтры. Вы можете делать это (a) до
передачи элементов в форму, (b) через опции конфигурирования,
которые передаются при создании элемента через
Сначала рассмотрим создание валидаторов для конкретного объекта
элемента. Вы можете передавать объекты
В случае использования второго варианта, если валидатор принимает аргументы конструктора, то вы можете передавать их через массив как третий параметр:
(Второй параметр используется для указания того, должен ли валидатор в том случае, если данные не прошли проверку, прерывать дальнейшую проверку в цепочке валидаторов; по умолчанию он равен false.) Вы можете также указать элемент как обязательный для заполнения. Это может быть сделано как с помощью аксессора, так и путем передачи определенной опции при создании элемента. В первом случае:
Если элемент обязателен для заполнения, то в начало цепочки валидаторов добавляется валидатор 'NotEmpty', который проверяет, имеет ли элемент значение. Фильтры регистрируются в основном так же, как и валидаторы. Для демонстрации добавим фильтр для приведения значения к нижнему регистру:
Таким образом, окончательно установка элемента получится такой, как показано ниже:
Выполнение этих действий для каждого элемента по отдельности может
показаться несколько утомительным. Попробуем вариант (b) из
перечисленных выше. Когда мы создаем новый элемент, используя
Визуализация формы
Визуализация формы производится легко. Большинство элементов
использует помощника
По умолчанию
Внутри себя
Код выше создает вывод наподобие следующего:
Вы можете изменить набор декораторов, используемый элементом, если хотите иметь другой результат вывода; более подробную информацию читайте в разделе о декораторах.
Форма сама по себе просто производит обход содержащегося в ней
списка элементов и окружает получившийся вывод тегами
Элементы обходятся в том же порядке, в котором они были зарегистрированы, но если ваш элемент содержит атрибут order, то он используется для сортировки. Вы можете установить порядок элемента, используя: Или путем передачи в качестве опции при создании элемента:
Проверка корректности данных формыПосле того, как получены данные формы, нужно их проверить и выяснить, правильно ли заполнена форма. Для всех элементов производится проверка переданных данных на наличие ключа, соответствующего имени элемента. Если этот ключ не найден, и элемент при этом помечен как обязательный, то для проверки на корректность используется значение null. Откуда идут данные? Вы можете использовать $_POST, $_GET, и любые другие источники данных (например, запросы веб-сервисов):
Вам может прийти в голову идея проверять данные одного элемента или
группы элементов с помощью AJAX-запросов.
Метод
Для проверки части формы может также использоваться метод
Если проверка на корректность заполнения была пройдена успешно, то вы можете извлечь прошедшие фильтрацию данные: Для того, чтобы извлечь нефильтрованные данные, используйте: Получение статуса ошибкиА что в том случае, если форма не прошла проверку на корректность? Как правило, вы можете просто вывести ее снова, и сообщения об ошибках будут отображены, если вы используете декораторы по умолчанию:
Если нужно проанализировать ошибки, то есть два способа их
получения. Объединяя изложенноеДавайте создадим простую форму для входа на сайт. Для нее будут нужны следующие элементы:
Для примера предположим, что корректное имя пользователя должно содержать только буквенно-цифровые символы, начинаться с буквы, иметь длину не меньше 6 и не больше 20 символов, кроме этого, имена пользователей должны быть приведены к нижнему регистру. Пароль должен содержать как минимум 6 символов. Переданное значение кнопки использоваться не будет, поэтому проверка для нее может не производиться.
Мы используем мощь конфигурационных опций
Затем создается контроллер для отображения формы и ее обработки:
...и скрипт вида для отображения формы:
Как вы наверное заметили, код контроллера не является полным -
после успешно проведенной проверки должна производиться авторизация
пользователя (например, используя Использование объекта Zend_Config
Все классы
Вы можете потом передать это конструктору формы:
... и вся форма будет определена. Заключение
Надеемся, что благодаря этому небольшому обучающему руководству вы
смогли получить представление о мощи и гибкости
|
|