В Drupal 7 появился новый вид группировки полей — Vertical Tabs:
Чтобы воспользоваться такими вкладками в свой форме, нужно:
1. Сгруппировать поля в обычные fieldset-ы:
$form['fieldset1'] = array(
'#type' => 'fieldset',
'#title' => 'Fieldset 1',
);
$form['fieldset1']['field1'] = array(
'#type' => 'textfield',
'#title' => 'Field 1',
);
$form['fieldset1']['field2'] = array(
'#type' => 'textfield',
'#title' => 'Field 2',
);
$form['fieldset2'] = array(
'#type' => 'fieldset',
'#title' => 'Fieldset 2',
);
$form['fieldset2']['field3'] = array(
'#type' => 'textfield',
'#title' => 'Field 3',
);
...
2. Добавить к форме новый элемент с типом vertical_tabs
:
$form['vertical_tabs'] = array(
'#type' => 'vertical_tabs',
);
3. Добавить fieldset-ам новый параметр '#group'
, в котором прописать имя элемента из пункта 2:
$form['fieldset1'] = array(
...
'#group' => 'vertical_tabs',
);
$form['fieldset2'] = array(
...
'#group' => 'vertical_tabs',
);
Profit.
Полный листинг:
$form['vertical_tabs'] = array(
'#type' => 'vertical_tabs',
);
$form['fieldset1'] = array(
'#type' => 'fieldset',
'#title' => 'Fieldset 1',
'#group' => 'vertical_tabs',
);
$form['fieldset1']['field1'] = array(
'#type' => 'textfield',
'#title' => 'Field 1',
);
$form['fieldset1']['field2'] = array(
'#type' => 'textfield',
'#title' => 'Field 2',
);
$form['fieldset2'] = array(
'#type' => 'fieldset',
'#title' => 'Fieldset 2',
'#group' => 'vertical_tabs',
);
$form['fieldset2']['field3'] = array(
'#type' => 'textfield',
'#title' => 'Field 3',
);
...
Написанное актуально для
Drupal 7
Комментарии
В закладки!
Кстати, для группировки полей в форме редактирования ноды отлично подходит http://drupal.org/project/field_group. Он позволяет перемещать поля в вертикальные вкладки как самого друпала, так и в свои собственные, а также в горизонтальные вкладки и accordition'ы.
А в 6-м друпале как?
'#group' => 'vertical_tabs', не работает
Все, два часа искал и разобрался
Да, только ж главное не забыть модуль Vertical Tabs установить)
Замечательный пост, как всегда. Вопрос в добавлении пояснений, как в модуле block. Есть желание заполнять без js. Есть ли какой-нибудь способ заполнить это поле дескрипшеном?
Блин. Код не высветился. Да и ладно... С чего я взял что мне помогут...
Что бы разместить вертикальные вкладки внутри другого фиелдсета нужно сделать что-то типа такого:
А как присвоить отдельный класс к каждой вкладке? Два месяца как ищу уже никак найти не могу ответ
Добавить комментарий