Jak domyślnie zwinąć niestandardowy zestaw pól w Drupal 8

13

W Drupal 7 istniała opcja zwijania zestawu pól lub nie oraz ograniczenia domyślnego stanu tego elementu formularza (zwiniętego lub nie zwiniętego). Przykład:

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

Teraz, w Drupal 8 nie mogę znaleźć attributtes #collapsiblei #collapsedw Drupal\Core\Render\Element\Fieldset. W oficjalnej dokumentacji elementu Fieldset nie wspomniano o żadnym nowym elemencie, który powinien zastąpić element Fieldset.

Nie ma też przeglądu elementów Form API dla Drupala 8, takiego jak dla Drupala 7. Musisz ręcznie wyszukać całą definicję Renderuj elementy w kodzie, co jest bardziej czasochłonne (szczególnie gdy chcesz zobaczyć przegląd elementów i porównać je) .

Juraj Nemec
źródło

Odpowiedzi:

26

Wszystkie składane zestawy pól zostały zastąpione elementami szczegółów HTML5.

Fieldset i legand są bardzo trudne do stylizacji i nie zaleca się ich używania z Drupalem 8. Zamiast tego został zastąpiony przez więcej przeglądarek, czyli tagi Szczegóły i podsumowanie HTML5.

'#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
źródło
2
Dziękuję za odpowiedź. Ale znowu jestem bardzo sfrustrowany faktem, że ta (niemała) zmiana jest opisana tylko na jakiejś stronie „Zmień zapis” i nie jest aktualizowana do oficjalnych stron dokumentacji ... Zobacz: Online documentation: Not done...
Juraj Nemec
1
Zapisy zmian są idealnym miejscem do sprawdzenia, jak zmieniła się rzecz X w Druapl 8. Można je łatwo przeszukiwać i zawsze zawierają przykłady przed / po. Zarówno kod, jak i dokumentacja są pisane głównie w wolnym czasie. Nie narzekaj, pomóż to poprawić.
Berdir
@Berdir Tak, znam tę dokumentację w formie napisanej w wolnym czasie i doceniam to :) Ale osobiście nie sądzę, że zmiany zapisów można łatwo przeszukiwać (z wyjątkiem Google). Po pierwsze, jako programista, przeszukujesz dokumentację (lub dokumentację API), więc wystarczy zwykłe odniesienie do określonego rekordu zmian (i nie jest tak czasochłonne jak pisanie tych przykładów w rekordach zmian). Poza tym muszę przyznać, że przykłady kodu w rekordach zmian są bardzo dobre.
Juraj Nemec
Gdzie reklamujesz ten kod w plikach drupal 8?
DavSev,
0

Przykład użycia notacji HereDoc do przechowywania opisu 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.
);
diamentowa
źródło