Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #74, ФЕВРАЛЬ 2005 г.

Придай форму!

Никита Кислицин

Хакер, номер #074, стр. 074-116-2


Ни минуты без практики!

Сейчас мы с тобой создадим элементарное приложение, которое приводится в качестве примера в любой документации по QuickForm. Создай php-скрипт со следующим содержимым:

<?php

require_once "HTML/QuickForm.php";

$form = new HTML_QuickForm('xa_test', 'get');

$form->addElement('header', 'header', 'Ха-форма');

$form->addElement('text', 'name', 'Твое имя:');

$form->addElement('reset', 'сlear', 'Очистить');

$form->addElement('submit', 'submit', 'Отправить');

$form->display();

?>

Чтобы не набивать этот скрипт руками, возьми его на нашем диске, он лежит там под именем qf_start.php. Когда ты выполнишь этот сценарий, то увидишь форму, изображенную на рисунке 2. Давай теперь построчно разберемся, как это работает. Первая строка подключает к сценарию модуль QuickForm.php, где описано семейство классов, главный из которых - HTML_QuickForm.

Он наследует HTML_Common, который расположен в другом модуле. Поэтому если Common-расширение у тебя не установлено, ты получишь сообщение об ошибке. Также уместным с моей стороны будет замечание о расположении модуля в файловой системе. По умолчанию при установке PEAR создает новые файлы в /usr/local/lib/php/, и поэтому если у тебя появляется ошибка, гласящая, что не удается найти файл HTML/QuickForm.php для включения, нужно будет изменить include-path на корректный, поменяв глобальные настройки интерпретатора либо выполнив set_include_path("/usr/local/lib/php/").

Но вернемся к нашему простенькому сценарию. Вторая строка создает переменную класса, причем конструктор вызывается с двумя параметрами: именем формы и методом, используемым для отправки данных сценарию. Как несложно догадаться, все последующие строки программы вызывают методы созданного объекта. Так, метод addElement добавляет в форму элемент и принимает три параметра: первый – тип элемента, второй – его название, а третий – символическая расшифровка, текст, выводимый пользователю. В зависимости от типа элемента этот текст будет располагаться в разных местах: если это кнопка, то будет написан на ней, а если текстовое поле, будет расположен рядом. В общем-то, тут несложно во все это въехать, если посмотреть на код и рисунок 2. Самый последний метод, который вызывается, – это процедура display, она выводит клиенту сгенерированную форму.

Заморозка

Разумеется, QuickForm обладает еще кучей разнообразных методов. Самое главное, что позволяет делать это расширение, - производить утверждение формы, то есть проверку ее полей по некоторым критериям. Это реализуется при помощи метода validate(), который проверяет соответствие содержимого полей некоторым правилам. Правила добавляются специальным методом addRule, который мы более подробно обсудим позже, но прежде мне следует упомянуть о другом интересном методе freeze(), который замораживает элементы формы. Прежде всего, что тут понимается под заморозкой. Если элемент заморожен, то он не может быть изменен пользователем. Это реализуется по-дедовски просто: меняется само представление документа. До тех пор пока элемент формы не заморожен, он являет собой текстовое поле, которое можно редактировать. Однако после того как программист вызвал метод freeze для этого элемента, его содержимое становится обычным текстом. Впрочем, лучше один раз увидеть: смотри рисунок 3.

Назад на стр. 074-116-1  Содержание  Вперед на стр. 074-116-3