ฉันใช้ hook_form_alter()
ขอเพิ่ม an นำมาใช้ ปุ่มไปที่แบบฟอร์มแก้ไขโหนด.. เมื่อผู้ใช้คลิกที่ปุ่มนั้น การเรียกกลับ AJAX จะแทนที่ค่าฟิลด์ข้อความ
ใช้งานได้ดีในครั้งแรก แต่ครั้งที่สองไม่ได้แทนที่ค่า
ฟังก์ชัน course_form_node_items_edit_form_alter (&$form, FormStateInterface $form_state) {
$form['สมัคร'] = array(
'#type' => 'ส่ง',
'#value' => t('สมัคร'),
'#น้ำหนัก' => '38',
'#executes_submit_callback' => เท็จ
'#limit_validation_errors' => อาร์เรย์(),
'#ajax' => อาร์เรย์(
'callback' => 'button_test_callback',
'wrapper' => 'แก้ไขฟิลด์ข้อความธรรมดา 0 ค่า',
),
);
}
ฟังก์ชัน button_test_callback (&$form, FormStateInterface $form_state) {
$item_id = $form['field_item_id']['widget'][0]['value']['#value'];
$sql = "เลือก item_name
จากรายการ
WHERE field_item_id = '" . $item_id . "'";
$location = \Drupal::database()->query($sql)->fetchAssoc();
$form['field_text_plain']['widget'][0]['value']['#value'] = $location;
$form['field_text_plain']['widget']['0']['value']['#id'] = 'แก้ไขฟิลด์ข้อความธรรมดา-0-ค่า';
ส่งคืน $form['field_text_plain'];
}
หลังจากคลิกครั้งแรก form_text_plain ตัวอย่างเช่น ID เปลี่ยนเป็นค่าสุ่ม แก้ไขฟิลด์ข้อความธรรมดา 0 ค่า xhfjwos. ดูเหมือนว่าจะเป็นประเด็น
มีวิธีใดบ้างที่จะหลีกเลี่ยง form_text_plain ไอดีเปลี่ยน?