Я использую крючок_form_alter()
крючок, чтобы добавить Применять на форму редактирования узла. Когда пользователи нажимают эту кнопку, обратный вызов AJAX заменяет значение текстового поля.
В первый раз он работает нормально, но во второй раз он не заменяет значение.
функция course_form_node_items_edit_form_alter(&$form, FormStateInterface $form_state) {
$ форма ['применить'] = массив (
'#type' => 'отправить',
'#value' => t('Применить'),
'#вес' => '38',
'#executes_submit_callback' => ЛОЖЬ,
'#limit_validation_errors' => массив(),
'#ajax' => массив(
'обратный вызов' => 'button_test_callback',
'обертка' => 'поле редактирования-текст-простое-0-значение',
),
);
}
функция button_test_callback(&$form, FormStateInterface $form_state) {
$item_id = $form['field_item_id']['виджет'][0]['значение']['#значение'];
$sql = "ВЫБЕРИТЕ имя_элемента
ИЗ предметов
ГДЕ 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';
возврат $form['field_text_plain'];
}
После первого щелчка form_text_plain ID меняется на какое-то случайное значение, например поле редактирования текста-простой-0-значение-xhfjwos. Кажется, в этом проблема.
Есть ли способ избежать form_text_plain Идентификатор меняется?