Руководство по PHP
Пред. |  | След.

# Глава 37. Работа с XForms

XForms являются альтернативой традиционным веб-формам, и позволяют использовать их на множестве платформ и браузеров, а также реализовывать нестандартные представления форм, например, в виде PDF-документа.

Первое существенное отличие XForms заключается в том, как форма отсылается клиенту. Руководство XForms для HTML-верстальщиков содержит детальное описание создания XForms. Для того, чтобы очертить основную идею руководства, приведем несколько простых примеров.

Пример 37-1. Простая XForms для поисковой формы

    <h:html xmlns:h="http://www.w3.org/1999/xhtml"
            xmlns="http://www.w3.org/2002/xforms">
    <h:head>
     <h:title>Search</h:title>
     <model>
      <submission action="http://example.com/search"
                  method="post" id="s"/>
     </model>
    </h:head>
    <h:body>
     <h:p>
      <input ref="q"><label>Find</label></input>
      <submit submission="s"><label>Go</label></submit>
     </h:p>
    </h:body>
    </h:html>

Приведенная выше форма отображает текстовое поле для ввода (названное `q`) и кнопку для оправки формы, при нажатии на которую все введенные данные будут отправлены скрипту, указанному в поле `action`.

Тут мы подошли к еще одному существенному различию с точки зрения вашего веб-приложения. Стандартная HTML-форма отправляет данные как `application/x-www-form-urlencoded`, а XForms для передачи данных использует разметку XML.

Если вы решили работать с XForms, скорее всего вы захотите получить отправленные пользователем данные в формате XML. В таком случае обратите внимание на переменную `$HTTP_RAW_POST_DATA`, в ней содержится XML-документ, сгенерированный браузером, который в дальнейшем можно обработать предпочитаемым вами движком XSLT или парсером XML.

Если XML-разметка вас не интересует, и вы хотите, чтобы передаваемые данные были помещены в стандартный массив `$_POST`, вы можете указать клиентскому браузеру на необходимость отправлять данные в формате `application/x-www-form-urlencoded`. Для этого установите атрибут `method` значением urlencoded-post.

Пример 37-2. Использование XForm совместно с массивом `$_POST`

    <h:html xmlns:h="http://www.w3.org/1999/xhtml"
            xmlns="http://www.w3.org/2002/xforms">
    <h:head>
     <h:title>Search</h:title>
     <model>
      <submission action="http://example.com/search"
                  method="urlencoded-post" id="s"/>
     </model>
    </h:head>
    <h:body>
     <h:p>
      <input ref="q"><label>Find</label></input>
      <submit submission="s"><label>Go</label></submit>
     </h:p>
    </h:body>
    </h:html>

> Замечание: В дополнение к вышесказанному следует заметить, что большое количество браузеров не поддерживают XForms. Если приведенные примеры потерпели неудачу, проверьте версию используемого вами браузера.

Пред. | Начало | След.
Sessions | Уровень выше | Загрузка файлов на сервер