ใน Drupal 8 ตารางการเรนเดอร์ยังคงเหมือน Drupal 7 คุณสร้างอาร์เรย์หลายมิติของแถวและคอลัมน์ใน PHP ที่ Drupal แปลงเป็น a <tr>
และ<td>
s ตามลำดับ ยังคงมี Drupalism ที่สับสนที่รู้จักกันในชื่อนี้'data'
ซึ่งช่วยให้คุณเพิ่มองค์ประกอบอาร์เรย์แสดงผลเป็นข้อมูลเซลล์ (เพื่อไม่ให้สับสนกับแอตทริบิวต์ของข้อมูล)
ฉันได้รับเว็บไซต์ที่ผู้พัฒนาเลือกใช้ 'data' เพื่อแสดงเนื้อหาของเซลล์ แต่ฉันไม่สามารถหาวิธีเพิ่มคลาสไปยัง<td>
รอบ ๆ ข้อมูลได้
ฉันได้อ่านซอร์สโค้ดและเอกสารสำหรับTable.phpแล้วและฉันรู้เรื่องใหม่แล้ว#wrapper_attributes
แต่ไม่สามารถถอดรหัสได้
ฉันลองอย่างน้อยสี่วิธีในการเพิ่มชั้นเรียนและไม่ทำงาน
$table['row-' . $row_id] = [
// Option 1: Class appears on <tr> tag
'#attributes' => [
'class' => ['option-1-row-attributes'],
'id' => 'row-' . $row_id,
'no_striping' => TRUE,
],
// Option 2: Class appears on <td> tag of first column.
'item' => [
'#markup' => $row['my_item']->label(),
'#wrapper_attributes' => [
'class' => ['option-2-markup-wrapper-attributes'],
],
],
// In the following section, the only item that works is
// the class on the <a> tag.
'edit_operation' => [
'data' => [
'#type' => 'link',
'#url' => Url::fromRoute('my_module.my_route', ['item' => $row_id]),
'#title' => $this->t('Edit'),
'#attributes' => [
// Option 3: Class appears on the anchor tag
'class' => ['use-ajax', 'option-3-link-attributes'],
'data-dialog-type' => 'modal',
'data-dialog-options' => Json::encode([
'width' => 700,
]),
],
// Option 4: Has no effect.
'#wrapper_attributes' => [
'class' => ['option-4-data-wrapper-attributes'],
],
],
// Option 5: Update: This appears to be the correct solution!
// Class appears on the <td>.
'#wrapper_attributes' => [
'class' => ['option-5-wrapper-attributes'],
],
// Option 6: Has no effect.
'#attributes' => [
'class' => ['option-6-attributes'],
],
// Option 7: Has no effect.
'class' => ['option-7-attributes'],
],
];