Tôi thêm lệnh gọi lại ajax vào trường đã chọn
$form['field_equipe_membre']['widget']['#ajax'] = mảng(
'gọi lại' => 'ajax_desactive_unites_field_callback',
'sự kiện' => 'thay đổi',
'phương thức' => 'html',
'trình bao bọc' => 'chỉnh sửa trường-đoàn kết-de-recherche-trình bao bọc',
);
Từ trường trigger_element, tôi đã truy xuất thành công một giá trị thông qua yêu cầu db và chọn giá trị đó trong một trường chọn khác
$trigger = $form_state->getTriggeringElement();
$selected_equipe = $trigger['#value'];
truy vấn $....
$response = new AjaxResponse();
$content = '<option value=\"'.$row_unite['nid'].'\" selected=\"đã chọn\">'.$row_unite['title'].'</option>';
$response->addCommand( new AppendCommand('#edit-field-unite-de-recherche', $content));
trả lại phản hồi $;
Nhưng khi tôi gửi biểu mẫu, giá trị được chọn bởi cuộc gọi lại không được lưu.
Các dòng ma thuật hoặc phương pháp phù hợp để làm điều này là gì?
tôi đã thử nghiệm
$form_state->setRebuild();
trong cuộc gọi lại; Tôi cũng đã thử nghiệm
$form_state->setValue('field_unite_de_recherche', $row_unite['nid']);
$form_state->setCached(TRUE);
Tôi đã thử nghiệm giải pháp được đề xuất ở đâu đó trong diễn đàn này để xác định trường ẩn trong hook_form_edit_alter
$form['product_id']['#type']='hidden';
$form['product_id']['#prefix']='<div id="liberte_pid">';
$form['product_id']['#suffix']='</div>';
và lưu giá trị trong cuộc gọi lại
$form['product_id']['#value'] = mảng(
$row_unite['nid'],
);
Nhưng không có giải pháp nào trong số này đưa ra giải pháp cho tôi.
Tôi cũng màu đỏ https://www.drupal.org/project/drupal/issues/2263569 trang, nhưng tôi không biết phải làm gì với.
Vì vậy: làm cách nào để lưu giá trị đã chọn này bằng lệnh gọi lại ajax?