Рейтинг:0

Управление видимостью поля раскрывающегося списка с помощью API #states для зависимого раскрывающегося списка

флаг cn

У меня следующая установка.

выпадающий_один

[
    '#тип' => 'выбрать',
    '#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 остается видимым, и я не могу понять, почему.

Я был бы очень признателен, если бы кто-то мог помочь.

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

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