При формировании select в виджете в функции formElement формируется массив значений:
<?php
foreach ($result as $r) {
$options = $options + [$r->id => $this->t($r->sGroupName . ' - ' . $r->sName),];
}
asort($options);
$element += [
'#type' => 'select',
'#default_value' => isset($items[$delta]->value) ? $items[$delta]->value : '',
'#size' => 1,
'#maxlength' => 255,
'#options' => $options,
'#empty' => $this->t('No Types found'),
'#element_validate' => [
[$this, 'TypesValidation'],
],
];
?>
Но формируется виджет с обычным select. Мне надо сгруппировать, т.е. добавить в этот select тег optgroup. Как это сделать?
Комментарии
Разобрался. В файле select.php есть пример:
<?php * @code
* $form['example_select'] = [
* '#type' => 'select',
* '#title' => $this->t('Select element'),
* '#options' => [
* '1' => $this->t('One'),
* '2' => [
* '2.1' => $this->t('Two point one'),
* '2.2' => $this->t('Two point two'),
* ],
* '3' => $this->t('Three'),
* ],
* ];
* @endcode?>