Рейтинг:0

сохранить выбор из ajaxified поля

флаг gb

Я успешно обновляю поле из ajax. Его объявление следующее:

$form['field_unite_de_recherche']['виджет']['#ajax'] = массив(
  'обратный вызов' => 'ajax_equipes_from_unites_callback',
  'событие' => 'изменить',
  'метод' => 'html',
  'wrapper' => 'поле редактирования-оборудование-membre2-обертка',
);

Это ajaxified поле объявляется следующим образом:

$form['field_equipe_membre2'] = [
  '#тип' => 'выбрать',
  '#title' => 'Equipe(s) membre rattachée(s) à '.$title,
  '#options' => $options,
];

Мой вопрос: как узнать и сохранить выбранное пользователем значение в этом ajaxified поле?

Я попытался добавить еще одно объявление ajax в это ajaxified поле, как показано ниже:

$form['field_equipe_membre2'] = [
  '#тип' => 'выбрать',
  '#title' => 'Equipe(s) membre rattachée(s) à '.$title,
  '#options' => $options,
  '#ajax' => массив(
    'обратный вызов' => 'ajax_save_choice_callback',
    'событие' => 'изменить',
    'метод' => 'html',
    'wrapper' => 'поле редактирования-оборудование-membre2-обертка',
  )
];

Но функция обратного вызова не запускается. Есть ли ограничение функции ajax в форме?

Я несколько раз отмечал, что могу использовать $form_sate, например, как в следующем (из Вызов Ajax с Submit теряет отправленные данные формы)

$value = $form_state->getValue('field_equipe_membre2');
$testArray = массив('field_equipe_membre2' => $value);
$form_state->setStorage($testArray);

Но обратный вызов не срабатывает.

Можно пару советов?

Jaypan avatar
флаг de
Обычно эти проблемы возникают, когда вы добавили элементы формы в обратный вызов ajax.К ним не будет применяться ajax. Вам нужно добавить элементы формы в определение формы.
cocq avatar
флаг gb
Может быть, я был недостаточно ясен. «field_equipe_membre2» в определении формы без каких-либо значений параметров, и эти значения хорошо заполняются функцией «ajax_equipes_from_unites_callback». Но я не нашел, как получить выбранное значение в поле «field_equipe_membre2», когда пользователь нажимает кнопку «отправить» в форме.
флаг in
Во-первых, я не думаю, что `setStorage()` - это тот метод, который вам нужен. Вместо этого вам, вероятно, следует использовать `setValue()`. Как вы представляете эту форму? Кроме того, это для Drupal 7, верно? Вы должны пометить вопрос номером версии Drupal.
cocq avatar
флаг gb
Вы правы в отношении setValue как лучшей функции, чем setStorage (один из моих многочисленных тестов...). Это для друпала 9.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.