Генератор форм по описанию полей в сущности. Упрощенная реализация, полезная когда форма не сильно сложная, или для отладки. Самостоятельно не используется.
Очень простой в использовании макрос, который генерирует HTML код формы, который обычно передается в ключ html макроса Form (см. пример).
Разработчик просто задает идентификатор сущности, а макрос строит по ней форму. Например, если у нас есть сущность вида
<entity id="feedbackitem" name="Обратная связь">
<field id="message" type="html" name="Сообщение"/>
<field id="FIO" type="string" name="ФИО"/>
<field id="login" type="string" name="Логин"/>
<field id="password" type="string" name="Пароль"/>
</entity>
то при вызове
$GenerateForm[entityid: feedbackitem; excludefields: login, password]$
будет сгенерирована такая HTML форма с двумя полями и кнопкой:
<FORM action="" method="POST" enctype="multipart/form-data" class="twl_form">
<P><DIV>Сообщение<BR><TEXTAREA name="Сообщение" rows="6" cols="46"></TEXTAREA></DIV></P>
<P><DIV>ФИО<BR><INPUT TYPE="text" name="ФИО" size="60" /></DIV></P>
<INPUT TYPE="submit" value="submit">
</FORM>
Её останется передать в макрос Form, где нужно настроить куда сохранять введенные пользователем данные, какие email рассылать и так далее - и форма готова к работе.
Ограничения
Разработчик не может повлиять на HTML код генерируемой формы кроме как через javascript сценарии в браузере на клиентской стороне, но он имеет возможность выбрать нужные или ненужные поля из сущности и далее "покрасить" форму с помощью CSS. Классы, которые генерирует Система, можно посмотреть в сгенерированном коде, их количество от версии к версии может увеличиваться (с сохранением обратной совместимости). Если разработчику нужно что-то выходящее за рамки возможностей CSS и javascript, тогда этот макрос не подходит для решения задачи и нужно собрать код формы вручную, вынести в отдельный шаблон, имя которого передать в макрос Form напрямую (см. его описание).
Макрос рисует:
- <INPUT TYPE="TEXT" ...> для полей типа string, money, date, url
- <TEXTAREA...></TEXTAREA> для полей типа text, sampletext, html
- <INPUT TYPE="checkbox" ...> для полей типа checkbox
- выпадающий список <SELECT ...><OPTION>...</SELECT> для полей типа list
- радиокнопки для полей типа radio
Поля остальных типов в форму не попадут.
Более подробно о типах полей см. документацию по файлу entities.xml.