คำแนะนำทั่วไปบางประการ:
อย่ากำหนดคีย์ตัวเลขเช่น 1 และ 2 ให้กับแถวของคุณ - ให้ PHP สร้างคีย์ หรือถ้าคุณต้องการตั้งค่าคีย์ของคุณเองจริงๆ ให้ใช้คีย์สตริงและกำหนดคีย์ให้กับทุกแถวสิ่งที่คุณแสดงด้านบนมีแถวแรกเป็นหมายเลข 1 จากนั้นแถวที่สอง สาม และสี่ไม่มีคีย์ (ดังนั้น PHP จะกำหนดให้ตามลำดับ 2, 3, 4) จากนั้นคุณให้แถวที่ห้าเป็นคีย์ 2 ซึ่งเขียนทับ แถวที่สอง (ซึ่งมีคีย์ที่สร้างขึ้นโดยอัตโนมัติเป็น 2) ดังนั้นคุณจึงมีสี่แถวแม้ว่าคุณจะต้องการห้าแถวก็ตาม การกำหนดคีย์แถวอย่างสม่ำเสมอตั้งแต่ต้นจะช่วยหลีกเลี่ยงปัญหาเช่นนี้
ในทำนองเดียวกัน เมื่อคุณทำสิ่งนี้:
'col2' => $form['example_select'] = [ ... ]
คุณกำลังเพิ่มองค์ประกอบฟอร์มใหม่ลงในฟอร์มในสองตำแหน่ง - หนึ่งครั้งในตารางและอีกครั้งนอกตาราง หากนั่นคือสิ่งที่คุณต้องการ ให้ประกาศองค์ประกอบฟอร์มภายนอกตารางก่อน แล้วใช้ตัวแปรภายในตาราง
อย่างไรก็ตาม ต่อไปนี้จะทำสิ่งที่คุณต้องการ:
$ส่วนหัว = [
'col1' => $this->t('COL1'),
'col2' => $this->t('COL2'),
];
$แถว = [];
$แถว[] = [
'col1' => 'แถว-1-เซลล์-1',
'col2' => 'แถว-1-เซลล์-2',
];
$แถว[] = [
'col1' => 'แถว-2-เซลล์-1',
'col2' => ['ข้อมูล' => [
'#type' => 'เลือก',
'#title' => $this->t('เลือกองค์ประกอบ'),
'#ตัวเลือก' => [
'1' => $this->t('หนึ่ง'),
'2' => $this->t('สอง'),
'3' => $this->t('สาม'),
]
]],
];
$แบบฟอร์ม['ทดสอบ'] = [
'#type' => 'เลือกตาราง',
'#header' => $ส่วนหัว,
'#options' => $rows,
];