Для более сложных форм помощник \IPS\Helpers\Form предоставляет несколько методов, чтобы помочь вам организовать и сгруппировать ваши поля формы:
- Вкладки (включая определение того, на какой вкладке находится поле с ошибкой).
- Заголовки (для группировки связанных полей под одним заголовком).
- Боковые блоки (чтобы добавить контекстный контент в форму).
- Разделители (разбить форму на логические части).
Использование их простое:
$form->addTab('Tab1');
$form->addHeader('Header');
$form->add( new \IPS\Helpers\Form\YesNo( 'yes_no_field' ) );
$form->add( new \IPS\Helpers\Form\Text( 'text_field' ) );
$form->addHeader('Header');
$form->add( new \IPS\Helpers\Form\Text( 'another_text_field' ) );
$form->addTab('Tab2');
$form->add( new \IPS\Helpers\Form\Text( 'another_text_field' ) );
Форма строится последовательно, поэтому вы должны вызывать addTab, addHeader и т.д., на которых расположены поля, которые должны появляться на этой вкладке или под этим заголовком, перед добавлением другой вкладки и т.д.
Вкладки
$form->addTab( string $lang [, string $icon=NULL [, string $blurbLang=NULL [, string $css=NULL ] ] ] )
- $lang (строка, обязательный) - Ключ языковой строки для использования на этой вкладке.
- $icon (строка, необязательный) - Если указано, на вкладке будет отображена иконка. Должна быть именем класса FontAwesome без префикса fa-. Например, cloud-download или envelope-o.
- $blurbLang (строка, необязательный) - Если указано, добавит описание сверху под вкладкой над полями. Должен быть ключ языковой строки.
- $css (строка, необязательный) - Строка названий CSS классов, разделённых пробелами, для добавления к обложке контента вкладки (но не к самой вкладке).
Заголовки
$form->addHeader( string $lang )
- $lang (строка, обязательный) - Ключ языковой строки для использования в качестве заголовка.
Боковой блок
На каждой вкладке может быть свой отдельный боковой блок (конечно же на одну вкладку только один боковой блок).
$form->addSidebar( string $html )
- $html (строка, обязательный) - HTML для отображения в качестве боковой панели. Обычно здесь вызывается шаблон:
$form->addSidebar( \IPS\Theme::i()->getTemplate( 'group', 'app', 'location' )->myTemplate() );