1)
Правильный формат для массива группы параметров (я буду использовать список состояний в качестве примера):
$state_list = array(
'AL'=>"Alabama",
'AK'=>"Alaska",
'AZ'=>"Arizona",
'AR'=>"Arkansas",
...
);
Будет отображен список имен состояний, доступных для инициалов состояния в виде ключей.
Чтобы использовать подгруппы, вы должны изменить вышеперечисленное, например:
$state_list = array(
'A'=> array(
'AL'=>"Alabama",
'AK'=>"Alaska",
'AZ'=>"Arizona",
'AR'=>"Arkansas",
...
),
'C'=> array(
'CA'=>'California',
'CO'=>'Colorado',
...
),
...
);
Таким образом, вам понадобится следующий формат для ваших переведенных данных, как указано:
$options = array(
'My Root' => array(
'Category 1' => array(
'14' => 'Sub-Category 1',
'15' => 'Sub-Category 2'
)
)
)
Однако, если «Мой корень» - это имя элемента select, используйте его вместо этого (я покажу вам определение формы для каждого из них ниже):
$options = array(
'Category 1' => array(
'14' => 'Sub-Category 1',
'15' => 'Sub-Category 2'
)
)
Ваше определение API форм будет выглядеть так:
function mymodule_form() {
$options = array(
'My Root' => array(
'Category 1' => array(
'14' => 'Sub-Category 1',
'15' => 'Sub-Category 2'
)
)
);
...
$form['Select Box Name'] = array(
'#type' => 'select',
'#title' => 'Select a Category',
'#options'=> $options,
);
...
return $form;
}
Или вот так, если 'My Root' - это имя элемента select, а не одна из его категорий:
function mymodule_form() {
$options = array(
'Category 1' => array(
'14' => 'Sub-Category 1',
'15' => 'Sub-Category 2'
)
);
...
$form['My Root'] = array(
'#type' => 'select',
'#title' => 'Select a Category',
'#options'=> $options,
);
...
return $form;
}
В этом определении ваши подкатегории обозначаются целыми числами - я не уверен, что это то, что вы хотите. Часто разработчики Drupal используют массивы с одинаковыми ключами и значениями (например, '[CA} => [CA]'), чтобы упростить процесс.
Побочным эффектом этого формата является то, что «Категория 1» сама по себе не может быть выбрана (поскольку ваш источник XML имеет ключи как для «Корня», так и для «Категории 1», мне кажется, что их можно было выбрать в предыдущем воплощении ); Я не уверен, что метки подкатегорий в группе параметров HTML есть, поэтому я не уверен, является ли это проблемой или нет.