#ต้นไม้
สร้างลำดับชั้นของค่าในตัวจัดการการส่งของฟอร์ม
เปรียบเทียบ:
ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
$form['คอนเทนเนอร์'] = [
'#type' => 'คอนเทนเนอร์',
];
$form['คอนเทนเนอร์']['some_value'] = [
'#type' = >'textfield',
];
// ปุ่มส่ง ฯลฯ ไม่แสดง
คืนฟอร์ม $;
}
สิ่งนี้จะสร้างองค์ประกอบฟอร์ม หลังจากคลิกส่ง คีย์ขององค์ประกอบฟอร์มจะใช้เพื่อส่งคืนค่า ในกรณีนี้ที่สำคัญคือ some_value
ความหมายตัวจัดการการตรวจสอบและการส่งสามารถดึงค่าที่ส่งด้วย form_state->getValue('some_value')
.
ตอนนี้เพิ่ม #ต้นไม้
ไปที่คอนเทนเนอร์:
ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
$form['คอนเทนเนอร์'] = [
'#type' => 'คอนเทนเนอร์',
'#tree' => จริง,
];
$form['คอนเทนเนอร์']['some_value'] = [
'#type' = >'textfield',
];
// ปุ่มส่ง ฯลฯ ไม่แสดง
คืนฟอร์ม $;
}
ด้วยการเปลี่ยนแปลงนี้ $form_state->getValue('some_value')
จะไม่ส่งคืนสิ่งใด เนื่องจากตอนนี้ค่าเป็นส่วนหนึ่งขององค์ประกอบคอนเทนเนอร์ (ไฟล์ #ต้นไม้
องค์ประกอบ) และจำเป็นต้องดึงข้อมูลที่สัมพันธ์กัน:
// ส่งคืนอาร์เรย์ที่มีคีย์เดียว 'some_value' ซึ่งมี
// ส่งค่า
$form_state->getValue('คอนเทนเนอร์')
// ส่งกลับค่าที่ส่ง:
$form_state->getValue(['คอนเทนเนอร์', 'some_value'])