ฉันเพิ่มการโทรกลับ ajax ลงในฟิลด์ที่เลือก
$form['field_equipe_membre']['widget']['#ajax'] = อาร์เรย์(
'callback' => 'ajax_desactive_unites_field_callback',
'เหตุการณ์' => 'เปลี่ยนแปลง',
'วิธีการ' => 'html',
'wrapper' => 'edit-field-unite-de-recherche-wrapper',
);
จากฟิลด์ triggering_element ฉันประสบความสำเร็จในการดึงค่าผ่านคำขอ db และเลือกค่านั้นในฟิลด์ที่เลือกอื่น
$trigger = $form_state->getTriggeringElement();
$selected_equipe = $trigger['#value'];
$แบบสอบถาม....
$response = ใหม่ AjaxResponse();
$content = '<option value=\"'.$row_unite['nid'].'\" Selected=\"selected\">'.$row_unite['title'].'</option>';
$response->addCommand( ใหม่ AppendCommand('#edit-field-unite-de-recherche', $content));
ส่งคืน $response;
แต่เมื่อฉันส่งแบบฟอร์ม ค่าที่เลือกโดยการโทรกลับจะไม่ถูกบันทึก
สายมายากลหรือวิธีการที่เหมาะสมในการทำเช่นนี้คืออะไร?
ฉันทดสอบ
$form_state->setRebuild();
ในการเรียกกลับ ; ฉันยังทดสอบ
$form_state->setValue('field_unite_de_recherche', $row_unite['nid']);
$form_state->setCached(จริง);
ฉันทดสอบโซลูชันที่เสนอที่ไหนสักแห่งในฟอรัมนี้เพื่อกำหนดฟิลด์ที่ซ่อนอยู่ใน hook_form_edit_alter
$form['product_id']['#type']='ซ่อน';
$form['product_id']['#prefix']='<div id="liberte_pid">';
$form['product_id']['#suffix']='</div>';
และบันทึกค่าในการเรียกกลับ
$form['product_id']['#value'] = อาร์เรย์(
$row_unite['นิด'],
);
แต่ไม่มีวิธีแก้ปัญหาใดที่ให้ทางออกสำหรับฉัน
ฉันยังแดงที่ https://www.drupal.org/project/drupal/issues/2263569 หน้าแต่ไม่รู้ว่าต้องทำยังไง
ดังนั้น: จะบันทึกค่าที่เลือกนี้โดยการโทรกลับ ajax ได้อย่างไร