Drupal 8でデフォルトでカスタムフィールドセットを折りたたむ方法


12

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

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

さて、Drupalの8に私はattributtes見つけることができない#collapsible#collapsedしてをDrupal\Core\Render\Element\Fieldset。Fieldset要素の公式ドキュメントには、Fieldset要素を置き換える新しい要素は記載されていません。

また、Drupal 7などのDrupal 8のForm API要素の概要はありません。コード内のすべてのRender Elements定義を手動で検索する必要があり、より時間がかかります(特に要素の概要を表示して比較する場合)。 。

回答:


25

折りたたみ可能なすべてのフィールドセットは、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.'),
);

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
回答ありがとうございます。:しかし、再び、私は非常にこれ(小さくない)変更が唯一のいくつかの「変更記録」ページに記載されており、公式ドキュメントのページを参照してください...に更新されていないという事実から、不満を感じています Online documentation: Not done...
ユライNemecの

1
変更レコードは、Druapl 8でXがどのように変更されたかを探すのに最適な場所です。それらは簡単に検索可能で、常にサンプルの前後に含まれています。コードとドキュメントの両方は、ほとんどの場合、人々の自由時間に書かれています。文句を言わないで、改善に協力してください。
ベルディール

@Berdirはい、私は自由時間で文書が書かれていることを知っており、感謝しています:)しかし個人的には、変更レコードは簡単に検索できるとは思いません(グーグルからは除く)。開発者は主にドキュメント(またはAPIドキュメント)で検索するため、特定の変更レコードへの単純なリンク参照で十分です(変更レコードに例を書くほど時間はかかりません)。それとは別に、変更レコードのコード例は非常に優れていることを認めなければなりません。
ジュラジネメック

このコードを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.
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.