วิธีการทำให้ fieldset ที่กำหนดเองยุบตามค่าเริ่มต้นใน Drupal 8


13

ใน Drupal 7 มีตัวเลือกให้ fieldset สามารถยุบได้หรือไม่และเพื่อ จำกัด สถานะเริ่มต้นขององค์ประกอบแบบฟอร์มนี้ (ยุบหรือยุบ) ตัวอย่าง:

$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

นอกจากนี้ยังไม่มีภาพรวมองค์ประกอบ APIสำหรับ Drupal 8 เช่น Drupal 7 คุณต้องค้นหาคำจำกัดความองค์ประกอบ Render ทั้งหมดด้วยตนเองในรหัสซึ่งใช้เวลานานกว่า (โดยเฉพาะเมื่อคุณต้องการดูภาพรวมองค์ประกอบและเปรียบเทียบ) .

คำตอบ:


26

เขตข้อมูลที่ยุบได้ทั้งหมดถูกแทนที่ด้วยองค์ประกอบรายละเอียด HTML5

Fieldset และ legand นั้นยากต่อการจัดวางและไม่แนะนำให้ใช้กับ Drupal 8 อีกต่อไป แทนที่มันจะถูกแทนที่ด้วยวิธีข้ามเบราว์เซอร์ที่มากขึ้นซึ่งเป็นแท็กรายละเอียด 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
ขอบคุณสำหรับคำตอบ แต่อีกครั้งฉันผิดหวังมากจากความจริงที่ว่าการเปลี่ยนแปลง (ไม่เล็ก) นี้มีการอธิบายเฉพาะในหน้า "บันทึกการเปลี่ยนแปลง" และไม่ได้อัปเดตเป็นหน้าเอกสารทางการ ... ดู: Online documentation: Not done...
Juraj Nemec

1
บันทึกการเปลี่ยนแปลงเป็นสถานที่ที่สมบูรณ์แบบในการค้นหาว่าสิ่งที่ X เปลี่ยนแปลงไปใน Druapl 8 นั้นสามารถค้นหาได้ง่ายและมีตัวอย่างก่อน / หลังเสมอ ทั้งรหัสและเอกสารส่วนใหญ่เขียนในเวลาว่างของผู้คน อย่าบ่นช่วยปรับปรุงมัน
Berdir

@Berdir ใช่ฉันรู้ว่าเอกสารเป็นลายลักษณ์อักษรในเวลาว่างและฉันขอขอบคุณ :) แต่โดยส่วนตัวฉันไม่คิดว่าบันทึกการเปลี่ยนแปลงนั้นสามารถค้นหาได้ง่าย (ยกเว้นจาก google) หลักในฐานะนักพัฒนาคุณค้นหาในเอกสาร (หรือเอกสารประกอบ API) ดังนั้นการอ้างอิงลิงก์แบบง่ายไปยังระเบียนการเปลี่ยนแปลงที่เฉพาะเจาะจงจะเพียงพอ (และไม่เสียเวลาเหมือนกับการเขียนตัวอย่างเหล่านั้นในบันทึกการเปลี่ยนแปลง) นอกจากนั้นฉันต้องยอมรับว่าตัวอย่างรหัสในบันทึกการเปลี่ยนแปลงนั้นดีมาก
Juraj Nemec

คุณจะโฆษณาโค้ดนี้ในไฟล์ 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.