tôi đang dùng hook_form_alter()
móc để thêm một Áp dụng vào biểu mẫu chỉnh sửa nút.. Khi người dùng nhấp vào nút đó, lệnh gọi lại AJAX sẽ thay thế giá trị trường văn bản.
Nó hoạt động tốt ở lần đầu tiên, nhưng lần thứ hai nó không thay thế giá trị.
function course_form_node_items_edit_form_alter(&$form, FormStateInterface $form_state) {
$form['áp dụng'] = mảng(
'#type' => 'gửi',
'#value' => t('Áp dụng'),
'#cân nặng' => '38',
'#executes_submit_callback' => SAI,
'#limit_validation_errors' => mảng(),
'#ajax' => mảng (
'gọi lại' => 'button_test_callback',
'trình bao bọc' => 'chỉnh sửa trường văn bản-đơn giản-0-giá trị',
),
);
}
chức năng button_test_callback(&$form, FormStateInterface $form_state) {
$item_id = $form['field_item_id']['widget'][0]['value']['#value'];
$sql = "CHỌN tên_mục
TỪ mục
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'] = 'edit-field-text-plain-0-value';
trả về $form['field_text_plain'];
}
Sau lần nhấp đầu tiên, form_text_plain ID thay đổi thành một số giá trị ngẫu nhiên, ví dụ chỉnh sửa-trường-văn-bản-thuần-0-giá-trị-xhfjwos. Có vẻ như đó là vấn đề.
Có cách nào để tránh form_text_plain ID thay đổi?