Як зробити власний набір полів замовчуванням у Drupal 8


13

У 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 API для Drupal 8, наприклад, для Drupal 7. Вам потрібно вручну шукати все визначення візуалізації елементів у коді, що забирає більше часу (особливо коли ви хочете переглянути огляд елементів та порівняти їх) .

Відповіді:


26

Усі розбірні набори полів були замінені елементами деталей HTML5.

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.'),
);

Друпал 8

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t('Lorem ipsum.'),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);

2
Дякую за відповідь Але знову ж таки, я дуже засмучений тим фактом, що ця (не маленька) зміна описана лише на певній сторінці "запису змін" і не оновлюється на сторінках офіційної документації ... Дивіться: Online documentation: Not done...
Juraj Nemec

1
Записи змін - це ідеальне місце для пошуку того, як змінилася річ X у Druapl 8. Їх легко шукати і завжди містять приклади до / після. І код, і документація в основному написані у вільний час людей. Не нарікайте, допоможіть вдосконалити це.
Бердір

@Berdir Так, я знаю, що документація написана у вільний час, і я ціную це :) Але особисто я не думаю, що записи змін легко легко шукати (за винятком google). Первинно, як розробник, ви шукаєте документацію (або документацію API), тому достатньо просто посилання на посилання на конкретний запис змін (і це не так багато часу, як записування цих прикладів у записи змін). Крім того, я мушу визнати, що приклади коду в записах змін дуже хороші.
Juraj Nemec

Де ви рекламуєте цей код у файлах drupal 8?
DavSev

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.
);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.