web-dev-qa-db-ja.com

Drupal 8でデフォルトで折りたたまれたカスタムフィールドセットを作成する方法

Drupal 7では、フィールドセットを折りたたみ可能にするかどうか、およびこのフォーム要素のデフォルト状態(折りたたみ、または折りたたみなし)を制限するオプション)がありました。例:

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

今、Drupal 8では、属性を見つけることができません#collapsibleおよび#collapsed in Drupal\Core\Render\Element\Fieldset。 Fieldset要素の公式ドキュメントでは、Fieldset要素の代わりとなる新しい要素については言及されていません。

またありません フォームAPI要素の概要 for Drupal 8、for Drupal 7.など。すべて手動で検索する必要があります。要素定義をコードでレンダリングします。これには時間がかかります(特に、要素の概要を表示して比較したい場合)。

13
Juraj Nemec

すべての折りたたみ可能なフィールドセットは、HTML5の詳細要素に置き換えられました。

フィールドセットとレガンドはスタイルを設定するのが非常に難しいため、Drupal 8との併用はお勧めしません。代わりに、HTML5の詳細タグと概要タグである、よりクロスブラウザーの方法に置き換えます。

'#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

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.
);
0
diamondsea