Cara membuat fieldset kustom diciutkan secara default di Drupal 8


12

Di Drupal 7 ada opsi untuk mengatur fieldset dapat dilipat atau tidak, dan untuk membatasi keadaan default elemen form ini (diciutkan, atau tidak diciutkan). Contoh:

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

Sekarang, di Drupal 8 saya tidak dapat menemukan atribusi #collapsibledan #collapseddalam Drupal\Core\Render\Element\Fieldset. Dalam dokumentasi resmi elemen Fieldset tidak disebutkan elemen baru, yang harus menggantikan elemen Fieldset.

Juga tidak ada ikhtisar elemen API Formulir untuk Drupal 8, seperti untuk Drupal 7. Anda harus secara manual mencari semua definisi Elemen Render dalam kode, yang lebih memakan waktu (terutama ketika Anda ingin melihat ikhtisar elemen dan membandingkannya) .

Jawaban:


25

Semua bidang yang dapat dilipat telah diganti dengan elemen detail HTML5.

Fieldset dan legand sangat sulit untuk ditata dan tidak direkomendasikan untuk digunakan dengan Drupal 8 lagi. Alih-alih diganti dengan lebih banyak browser lintas, yang merupakan tag Detail & Ringkasan 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.
);

2
Terima kasih atas jawabannya. Tetapi sekali lagi, saya sangat frustrasi dengan kenyataan, bahwa perubahan (tidak kecil) ini hanya dijelaskan pada beberapa halaman "ubah catatan" dan tidak diperbarui ke halaman dokumentasi resmi ... Lihat: Online documentation: Not done...
Juraj Nemec

1
Change record adalah tempat yang sempurna untuk mencari bagaimana benda X diubah dalam Druapl 8. Mereka mudah dicari dan selalu berisi sebelum / sesudah contoh. Baik kode dan dokumentasi sebagian besar ditulis dalam waktu luang orang. Jangan mengeluh, bantu memperbaikinya.
Berdir

@Berdir Ya, saya tahu dokumentasi itu ditulis dalam waktu luang dan saya menghargai itu :) Tapi secara pribadi saya tidak berpikir, bahwa catatan perubahan mudah dicari (kecuali dari google). Primer, sebagai pengembang, Anda mencari di dokumentasi (atau dokumentasi API), jadi hanya referensi tautan sederhana ke catatan perubahan spesifik sudah cukup (dan tidak memakan waktu seperti menulis contoh-contoh itu dalam catatan perubahan). Terlepas dari itu, saya harus mengakui, bahwa contoh kode dalam catatan perubahan sangat baik.
Juraj Nemec

Di mana Anda iklankan kode ini dalam 8 file drupal?
DavSev

0

Contoh menggunakan notasi HereDoc untuk menyimpan Deskripsi 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.
);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.