Wie man ein benutzerdefiniertes Feldset in Drupal 8 standardmäßig reduziert


12

In Drupal 7 gab es die Möglichkeit, das Fieldset komprimierbar oder nicht komprimierbar zu machen und den Standardstatus dieses Formularelements (komprimiert oder nicht komprimiert) einzuschränken. Beispiel:

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

Nun, in Drupal 8 kann ich keine Attribute finden #collapsibleund #collapsedin Drupal\Core\Render\Element\Fieldset. In der offiziellen Dokumentation des Fieldset-Elements wird kein neues Element erwähnt, das das Fieldset-Element ersetzen soll.

Außerdem gibt es für Drupal 8 keine Übersicht über Formular-API-Elemente , z. B. für Drupal 7. Sie müssen manuell nach allen Render-Element-Definitionen im Code suchen. Dies ist zeitaufwändiger (insbesondere, wenn Sie die Elementübersicht anzeigen und vergleichen möchten). .

Antworten:


25

Alle ausblendbaren Feldsätze wurden durch HTML5-Detailelemente ersetzt.

Fieldset und Legand sind sehr schwer zu stylen und werden nicht mehr für Drupal 8 empfohlen. Stattdessen wird es durch eine browserübergreifendere Methode ersetzt, nämlich die HTML5-Tags 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.
);

2
Danke für die Antwort. Aber auch hier bin ich sehr frustriert darüber, dass diese (nicht kleine) Änderung nur auf einer "Änderungsprotokoll" -Seite beschrieben wird und nicht auf offizielle Dokumentationsseiten aktualisiert wird ... Siehe: Online documentation: Not done...
Juraj Nemec

1
Änderungsdatensätze sind der perfekte Ort, um herauszufinden, wie sich X in Druapl 8 geändert hat. Sie sind leicht zu durchsuchen und enthalten immer Vorher / Nachher-Beispiele. Sowohl Code als auch Dokumentation werden hauptsächlich in der Freizeit geschrieben. Beschwere dich nicht, hilf, es zu verbessern.
Berdir

@Berdir Ja, ich weiß, dass die Dokumentation in der Freizeit geschrieben wurde und ich weiß das zu schätzen :) Aber ich persönlich glaube nicht, dass Änderungsaufzeichnungen leicht durchsuchbar sind (außer von Google). In erster Linie suchen Sie als Entwickler in der Dokumentation (oder API-Dokumentation), sodass ein einfacher Linkverweis auf einen bestimmten Änderungsdatensatz ausreicht (und dies ist nicht so zeitaufwendig wie das Schreiben dieser Beispiele in Änderungsdatensätze). Ansonsten muss ich zugeben, dass die Codebeispiele in Änderungssätzen sehr gut sind.
Juraj Nemec

Wo fügen Sie diesen Code in Drupal 8-Dateien ein?
DavSev

0

Beispiel mit HereDoc-Notation zum Speichern der HTML-Beschreibung:

$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.
);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.