web-dev-qa-db-fra.com

Comment réduire par défaut le jeu de champs personnalisé dans Drupal 8

Dans Drupal 7, il était possible d'avoir fieldset pliable ou non, et de restreindre l'état par défaut de cet élément de formulaire (réduit ou non réduit). Exemple:

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

Maintenant, dans Drupal 8 je ne trouve pas les attributs #collapsible et #collapsed dans Drupal\Core\Render\Element\Fieldset. Dans la documentation officielle de l'élément Fieldset n'est mentionné aucun nouvel élément, qui devrait remplacer l'élément Fieldset.

Il n'y a pas non plus Présentation des éléments de l'API de formulaire pour Drupal 8, comme pour Drupal 7. Vous devez rechercher manuellement tous Rendre la définition des éléments dans le code, ce qui prend plus de temps (surtout lorsque vous souhaitez voir la vue d'ensemble des éléments et les comparer).

13
Juraj Nemec

Tous les ensembles de champs réductibles ont été remplacés par des éléments de détails HTML5.

Fieldset et legand sont très difficiles à styliser et il n'est pas recommandé de les utiliser avec Drupal 8 plus. Au lieu de cela, il est remplacé par une méthode plus multi-navigateurs, qui est les balises HTML5 Details & Summary.

'#type' => 'details'

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

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.
);
26
DRUPWAY

Exemple utilisant la notation HereDoc pour stocker la description 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.
);
0
diamondsea