Drupal → Темизация группы чекбоксов или радио-кнопок (#type=>checkboxes, #type=>radios)

02.02.2023

Пример вывода списка радио-кнопок в виде таблицы.

1. Добавляем элементу свойство #theme:

$form['color'] = [
  '#type' => 'radios',
  '#title' => 'Color',
  '#options' => [
    'red' => 'Red',
    'green' => 'Green',
    'blue' => 'Blue',
  ],
  '#theme' => 'color_options',
];

2. Реализуем хук hook_theme:

// THEMENAME.theme

/**
 * Implements hook_theme().
 */
function THEMENAME_theme(): array {
  return [
    'color_options' => [
      'render element' => 'element',
    ],
  ];
}

3. Создаём шаблон THEMENAME/templates/color-options.html.twig:

<table>
  {% for option_element in element|children %}
    <tr>
      <td>{{ option_element|without('#title') }}</td>
      <td style="color:{{ option_element['#return_value'] }};">{{ option_element['#title'] }}</td>
    </tr>
  {% endfor %}
</table>

Для работы фильтра |children понадобится модуль Twig Tweak.

Написанное актуально для
Drupal 8+
Похожие записи

Добавить комментарий