====== Работа с формами. Валидация данных, пришедших с форм ====== ===== Команды для работы с формами ===== Если вы используете [[limb3_2007_2:ru:packages:web_app|пакет WEB_APP]], тогда наиболее логичным будет работа с формами при помощи [[limb3_2007_2:ru:packages:web_app:lmbFormCommand|класса lmbFormCommand]]. Этот класс всего лишь является [[limb3_2007_2:ru:packages:web_app:lmb_command|командой]], которая содержит различные способы ее расширения (использован паттерн observer). В простых случаях для работы с формами через lmbFormCommand ее расширяют методами, которые содержатся в самом дочернем классе, например: registerOnValidCallback($this, 'create'); $this->registerOnShowCallback($this, 'initForm'); } function initForm($form){ [...] } function create($form){ [...] } } ?> Метод initForm($form) будет вызван, если форма будет отображена в первый раз, метод сreate($form) будет вызван, если форма была отослана пользователем и все данные были введены верно. ===== Шаблоны форм ===== При использовании WACT-шаблонизатора формы описываются при помощи обычных тегов
с указанием атрибута //runat='server'//. lmbFormCommand построен таким образом, что он считает форму отосланной, если в запросе есть атрибут //submitted//, поэтому в шаблоне обычно присутствует скрытое поле с таким названием, например:
/form>
Обратите внимание на атрибут //runat='client'// тега . Подробнее об этом: [[limb3_2007_2:ru:template_system:generic_tags#html_form_tags_html_tegi_dlja_raboty_s_formami|работа с generic tags в wact-шаблонах]], смотрите работу с html тегами для форм на этой же странице). Обратите внимание на атрибут //title// тега. Значение этого атрибута используется при отображении ошибок валидации (см. ниже). ===== Почему выгодно использовать WACT-шаблоны для работы с формами ===== lmbFormCommand передает все свои данные и ошибки валидации во [[limb3_2007_2:ru:packages:web_app:view|View]], откуда они при попадают в шаблон. Если это WACT-шаблон, тогда при возникновении ошибки валидации на форме, данные с формы не будут потеряны, все элементы при повторном отображении формы заново получат свои значения, которые в них были на момент отправки формы. Также в WACT-компоненты, связанные с работой форм, уже встроены средства для отображения ошибок валидации (см. ниже).