ฉันใช้รหัสต่อไปนี้สำหรับแบบฟอร์ม
ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
$region_options = คงที่::getFirstDropdownOptions();
$แบบฟอร์ม['vvv_region'] = [
'#type' => 'เลือก',
'#title' => $this->t('ช่องเลือกภูมิภาค'),
'#options' => $region_options,
'#empty_option' => t('- เลือกภูมิภาค -'),
'#อาแจ็กซ์' => [
'callback' => '::myAjaxCallback',
'disable-refocus' => FALSE,
'เหตุการณ์' => 'เปลี่ยนแปลง',
'wrapper' => 'แก้ไขเอาต์พุต',
'ความคืบหน้า' => [
'type' => 'throbber',
'message' => $this->t('กำลังตรวจสอบรายการ...'),
]
]
];
$region_selected = $form_state->getValue('vvv_region');
$city_options = static::getSecondDropdownOptions($region_selected);
$form['เอาท์พุท'] = [
'#type' => 'เลือก',
'#title' => $this->t('ฟิลด์เลือกเมือง'),
'#options' => $city_options,
'#prefix' => '<div id="edit-output">',
'#suffix' => '</div>',
'#empty_option' => t('- เลือกเมือง -'),
'#default_value' => '',
'#อาแจ็กซ์' => [
'callback' => '::cityAjaxCallback',
'disable-refocus' => FALSE,
'เหตุการณ์' => 'เปลี่ยนแปลง',
'wrapper' => 'แก้ไขเมือง',
'ความคืบหน้า' => [
'type' => 'throbber',
'message' => $this->t('กำลังตรวจสอบรายการ...'),
]
]
];
$city_select = $form_state->getValue('เอาท์พุท');
$suburb_options = คงที่::getSuburbDropdownOptions($city_select);
$รูปแบบ['sur'] = [
'#type' => 'เลือก',
'#options' => $suburb_options,
'#prefix' => '<div id="edit-city">',
'#suffix' => '</div>',
'#empty_option' => t('- เลือก sururb -'),
'#default_value' => อาร์เรย์(''),
];
คืนฟอร์ม $;
}
ฟังก์ชันสาธารณะ myAjaxCallback (อาร์เรย์ &$form, FormStateInterface $form_state) {
$region_selected = $form_state->getValue('vvv_region');
$city_options = static::getSecondDropdownOptions($region_selected);
ถ้า ($form_state->getErrors()) {
\Drupal::messenger()->addError($region_selected);
$form_state->setRebuild();
}
$form['outpout']['#options'] = $city_options;
ส่งคืน $form['output'];
}
ฟังก์ชั่นสาธารณะ cityAjaxCallback (อาร์เรย์ &$form, FormStateInterface $form_state) {
$city_select = $form_state->getValue('เอาท์พุท');
$sur_data = คงที่::getSuburbDropdownOptions($city_select);
ถ้า ($form_state->getErrors()) {
\Drupal::messenger()->addError($city_select);
$form_state->setRebuild();
}
$form['sur']['#options'] = $sur_data;
ส่งคืน $form['sur'];
}
เมื่อส่งแบบฟอร์ม ฉันได้รับข้อผิดพลาดต่อไปนี้
มีการระบุการเลือกที่ไม่ถูกต้อง โปรดติดต่อผู้ดูแลไซต์
เกิดอะไรขึ้นกับรหัสที่ฉันใช้