У меня следующая установка.
выпадающий_один
[
'#тип' => 'выбрать',
'#title' => $this->t('Выпадающий список'),
'#options' => $dropdownOneOptions,
'#empty_option' => '---',
'#вес' => 1,
'#ajax' => [
'событие' => 'изменить',
'обратный вызов' => [$this, 'getDropdownTwoOptions'],
'обертка' => 'раскрывающийся список два',
'прогресс' => [
'тип' => 'пульсирующий',
],
],
'#name' => 'dropdown_one',
]
выпадающее_два
[
'#тип' => 'выбрать',
'#title' => $this->t('Выпадающий список два'),
'#опции' => [],
'#empty_option' => '---',
'#вес' => 2,
'#ajax' => [
'событие' => 'изменить',
'обратный вызов' => [$this, 'getDropdownThreeOptions'],
'обертка' => 'раскрывающийся список три',
'прогресс' => [
'тип' => 'пульсирующий',
],
],
'#name' => 'dropdown_two',
'#prefix' => sprintf('<div id="%s">', 'выпадающий список-два'),
'#суффикс' => '</div>',
'#состояния' => [
'невидимый' => [
':input[name="dropdown_one"]' => ['value' => ''],
],
],
]
выпадающее_три
[
'#тип' => 'выбрать',
'#title' => $this->t('Три выпадающего списка'),
'#опции' => [],
'#empty_option' => '---',
'#вес' => 3,
'#name' => 'dropdown_three',
'#prefix' => sprintf('<div id="%s">', 'выпадающее-три'),
'#суффикс' => '</div>',
'#состояния' => [
'невидимый' => [
':input[name="dropdown_two"]' => ['value' => ''],
],
],
]
Параметры полей выбора раскрывающегося списка два и раскрывающийся список три обновляются/устанавливаются с помощью соответствующего обратного вызова AJAX с HtmlCommand()
.
$response = новый AjaxResponse();
$wrapper_id = $triggeringElement['#ajax']['wrapper']; // 'раскрывающееся-два' или 'раскрывающееся-три'
$response->addCommand(new HtmlCommand("#$wrapper_id select", $html)); // $html = "<option value='foo'>bar</option>...";
Я пытаюсь понять, почему этот случай не работает:
В раскрывающемся списке выбран непустой вариант
И выпадающий список два отображается
И непустая опция выбрана в раскрывающемся списке два
И отображается раскрывающийся список три
Когда я выбираю пустую опцию в раскрывающемся списке
Затем раскрывающийся список два и раскрывающийся список три не должны отображаться
К сожалению, когда я запускаю этот набор действий, раскрывающийся список 3 остается видимым, и я не могу понять, почему.
Я был бы очень признателен, если бы кто-то мог помочь.