Старая версия xmlhack.ru


[XML и язык программирования PHP][XML-инструментарий]  Totally XMLed Forms 1.0 beta1
  20.05.03 Паращенко Олег

Totally XMLed Forms (TXF), PHP-библиотека для обработки HTML-форм, получила статус беты.

Мы уже писали о TXF. За это время на её основе был сделан электронный магазин, а в самой библиотеке появились улучшения и исправлены найденные ошибки.

Далее приведён текст автора.

TXF 1.0 beta1

Недавно я закончил работу над электронным магазином, в котором использовался DOMXML для формирования контента, XSLT для преобразования в HTML и TXF для обработки форм. Это первый проект, в котором TXF применён. Наверное, большую часть времени я потратил на поиск и исправление ошибок именно в TXF. В результате, на мой взгляд, проект можно назвать бетой.

Для беты выпущен XSLT-стиль для вывода формы как таблицы и пример формы (правда, пока без правил проверки).

Некоторые итоги работы

Спецификация XForms пока что не включена, не до неё было. Некоторые фичи, судя по всему были явно не на месте, поэтому в бете будут исправляться. Например, содержимое аттрибута, указывавший имя вызываемой функции, считается путем XPath, и поэтому, чтобы задать просто строку с именем функции, надо писать так:

<txf:func name="'my_function'">

Очевидно, что большинство функций вызываются напрямую, поэтому XPath я сделаю доступным через фигурные скобки.

Требуется так же сделать внутри класса единую функцию по выполнению выражений XPath, сделать функцию для добавления в форму элементов управления и опций, потому что пока мне приходится это делать руками. Так же думаю сделать отдельный элемент управления "дата".

Положительные стороны

Стало до некоторого момента проще писать php-скрипты. Объявляю объект формы, вставляю данные, делаю get_status и по нему switch. Дальше - случай 1 - форма не заполнена, а запрашивается для редактирования по id записи, случай 2 - создаётся новая запись, случай 3 - редактируется существующая, 4 - форма заполнена, но неправильно. Код копируется из скрипта в скрипт без проблем, независимо от содержимого форм.

Чтобы добавить данные в форму, делаю запрос к БД, затем полученный массив просто отдаю функции append_values (элементы управления в форме должны быть проименованы соответствующим образом, конечно же, впрочем лично я давно уже называю поля в формах так же, как и поля в базе). Аналогично задаётся надпись на кнопке отправки формы (она ведь может быть "создать", а может - "сохранить изменения").

Данные, отправленные в форму, не надо слэшить или заменять в них HTML-ные спецсимволы. Это всё добавится автоматически - проявление удобства модуля DOM.

Если вы нашли в TXF ещё что-нибудь хорошее, пишите.

Отрицательные стороны

В общем случае это можно назвать "класс корявый".

Добавление одной опции в элемент <select> занимает 5 строк. Создание элемента, добавление в документ, задание содержимого (это create_text_node и append_child), задание пространства имён. Много, в общем, надо делать функцию.

Добавить контрол в форму тоже непросто, столько же кода + установка аттрибутов.

Модель данных. Не знаю, стоило ли делать значения дочерними элементами input-ов. Сильно усложняет XSLT.

Работать с чекбоксами - это отдельная песня, пока что не спрашивайте, пожалуйста про неё.

Если N полей надо отфильтровать при помощи регулярных выражений, надо писать N одинаковых конструкций txf:func.

Жду новых комментариев и идей.