Как сделать пользовательский набор полей свернутым по умолчанию в Drupal 8

12

В Drupal 7 была возможность иметь разборный набор полей или нет, и ограничить состояние по умолчанию для этого элемента формы (свернутый или не свернутый). Пример:

$form['contact_data'] = array(
        '#title' => t("Contact data"),
        '#type' => 'fieldset',
        '#collapsible' => TRUE,
        '#collapsed' => FALSE,
);

Теперь, в Drupal 8 я не могу найти атрибуты #collapsibleи #collapsedв Drupal\Core\Render\Element\Fieldset. В официальной документации элемента Fieldset не упоминается ни одного нового элемента, который должен заменить элемент Fieldset.

Также отсутствует обзор элементов API формы для Drupal 8, например, для Drupal 7. Необходимо вручную искать все определения элементов рендеринга в коде, что требует больше времени (особенно, если вы хотите просмотреть обзор элементов и сравнить их) ,

Юрай Немец
источник

Ответы:

25

Все складные наборы полей были заменены элементами HTML5 details.

Fieldset и legand очень сложны для стиля, и их больше не рекомендуется использовать с Drupal 8. Вместо этого его заменили более кросс-браузерным способом, который представляет собой теги HTML5 Details & Summary.

'#type' => 'details'

https://www.drupal.org/node/1852020

Drupal 7

$form['advanced'] = array(
  '#type' => 'fieldset',
  '#title' => t('Advanced settings'),
  '#collapsible' => TRUE,
  '#collapsed' => FALSE,
  '#description' => t('Lorem ipsum.'),
);

Drupal 8

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t('Lorem ipsum.'),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);
DRUPWAY
источник
2
Спасибо тебе за ответ. Но опять же, я очень разочарован тем фактом, что это (не маленькое) изменение описано только на некоторой странице «записи изменений» и не обновлено до страниц официальной документации ... См .: Online documentation: Not done...
Juraj Nemec
1
Записи изменений - это идеальное место, чтобы посмотреть, как X изменился в Druapl 8. Они легко доступны для поиска и всегда содержат примеры до и после. И код, и документация в основном написаны в свободное время людей. Не жалуйтесь, помогите улучшить это.
Бердир
@Berdir Да, я знаю, что документация написана в свободное время, и я ценю это :) Но лично я не думаю, что записи изменений легко доступны для поиска (кроме как от Google). Первоначально, как разработчик, вы выполняете поиск в документации (или документации API), поэтому достаточно просто ссылки на конкретную запись изменения (и это не так много времени, как написание этих примеров в записях изменений). Кроме того, я должен признать, что примеры кода в записях изменений очень хороши.
Юрай Немец
Где вы размещаете этот код в файлах drupal 8?
ДавСев
0

Пример использования HereDoc для хранения описания HTML:

$desc_html = <<<HTML
<p>
  <strong>Put the HTML to be displayed when open in here.</strong>
<p>
HTML;

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t($desc_html),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);
diamondsea
источник