Тэг form — форма
Основной тэг формы. В нём описываются вкладки и поля формы.
На данный момент, такой тэг в xml-файле может быть только один.
Примеры использования
<form width="900">
<php type="beforestore"> <!-- Данный php-скрипт будет выполняться перед сохранением -->
<![CDATA[
// Можно использовать php. Например, при сохранении.
]]>
</php>
<javascript type="onsuccess"> <!-- Данный javascript будет выполняться после сохранения, в случае успеха. -->
<![CDATA[
// Можно использовать javascript. Например, при сохранении.
]]>
</javascript>
<text>
<title>Заголовок</title>
<before></before>
<after></after>
<help key="micro"></help>
</text>
<tab name="general" caption="Основное">
<elements>
<!-- Поля формы -->
</elements>
</tab>
<tab name="additional" caption="Дополнительно">
<elements>
<!-- Поля другой вкладки -->
</elements>
</tab>
<finishsql on="store|delete">
<!-- Запрос на выполнение после сохранения -->
</finishsql>
</form>
Элементы
(Мы постарались перечилить элементы в том порядке, в каком они чаще всего идут. Но при этом реальный порядок не принципиален).
(N) — элемент может использоваться несколько раз, (1) — элемент используется один раз. Жирным выделены самые часто используемые элементы.
text(1) — изменение текстовых значений.check(N) — запрос или php скрипт (server side), который выполняется перед сохранением для проверки правильности заполнения формы. Может быть использован, например, для того чтобы проверить на конфликт уникальных ключей.javascript(N) — javascript, выполняющийся при разных действиях с формой. Чаще всего — при открытии и закрытии.php(N) — скрипт, который выполняется на сервере, при опредленных событиях в ходе сохранения (чаще всего перед сохранением и после сохранения).sources(1) — тэг с перечислением источников, откуда берётся информация.dbstructure(1) — особый тэг, который позвоялет указать, из какой таблицы нам брать все поля формы. Необходим для создания динамических форм.loadsql(1) — запрос, который выполняется для получения данных для заполнения формы (при открытии существующей записи)defaultssql(1) — запрос, который выполняется для получения значений по умолчанию для полей формы (актуально если мы создаём новую запись).header(1) — хедер. Какtab, только элементы из него будут показываться всегда над формой (над панелью вкладок). Вне зависимости от того, какая вкладка открыта, хедер всегда будет виден.elements(1) — элементы формы (поля, html-вставки, встроенные списки, etc.). Используется, если табов (вкладок) у формы нет. Бесполезен, если указывается tab.tab(N) — таб (вкладка) формы. Тэгelementsтакже используется внутри.finishsql(N) — запрос, выполняющийся при сохранении и/или удалении. Может быть использован и внутриelementsfooter(1) — футер. Какtab, только элементы из него будут показываться всегда в самом конце формы. Вне зависимости от того, какая вкладка открыта, футер всегда будет виден.
Атрибуты
(Мы перечилили элементы в порядке частоты использования, но при этом постарались сгруппировать их, чтобы близкие по смыслу атрибуты шли рядом).
| Атрибут | Описание | Примечание |
|---|---|---|
width |
Ширина формы в пикселях (число) | По умолчанию — 640 |
multiple |
Можно указать имя checkboxgroup поле, тогда при сохранении для каждой выбранной в checkboxgroup записи будет создана отдельная строчка в базе. |
Подробнее см. ниже. |
dubplicate-update |
Указывает на то, как поступать, если форма создает запись, повторяющую по уникальному ключу существующую. Если !== 0, то будет произведено обновление полей существующей записи. | При этом лучше добавлять ещё check, который предупредит пользователя. |
dubplicate-ignore |
Указывает на то, как поступать, если форма создаёт запись, повторяющую по уникальному ключу существующую. Если !== 0, то дублирование будет просто проигнорировано. | При этом лучше добавлять ещё check, который предупредит пользователя. Если не стоит dubplicate-ignore или dubplicate-update, то при повторяющихся идентификаторах выдаст ошибку |
nostore |
Не выполнять сохранение (при этом finishsql выполняться будут) |
Бывает удобно использовать, если нам необходимо самим написать запрос на сохранение информации — тогда заключаем его в finishsql. |
hideaddmore |
Скрыть кнопку «Сохранить и создать новую запись» (если !== 0) | Используется достаточно часто, когда мы делаем форму, которая вызывается по кастомной кнопке из списка. Например форма «Провести инструктаж» из контроля сроков. По умолчанию — 0. |
hideapply |
Скрыть кнопку «Применить» (если !== 0) | По умолчанию — 0 |
hidedbl |
Скрыть кнопку «Сохранить и дублировать» (если !== 0) | По умолчанию — 0. Кнопка отображается только если нажать и удерживать клавишу SHIFT. |
hideedit |
Если !== 0 Скрывает кнопку «Изменить», которая доступна когда мы открываем форму на просмотр (оранжевая слева внизу) | По умолчанию — 0 |
hidedone |
Скрывает кнопку «Создать»/«Готово», если !== 0 | По умолчанию — 0 |
hidesave |
Если !== 0, то скрывает все кнопки для сохранения информации разом, если не задано иное поведени. | Аналог hidedone="1" hideapply="1" hidedbl="1" hideaddmore="1" По умолчанию — 0. |
warn-unsaved |
Если !== 0, предупреждать пользователя, если он намеревается закрыть форму с несохраненными изменениями. | По умолчанию — 1 (т.е. предупреждать) |
method |
Не уверен, зачем это нам надо было, но атрибут позволяет изменить то, каким методом будут передаваться данные контроллеру сохранения. | По умолчанию — POST. Можно указать GET. |