Am urmatoarea configuratie.
dropdown_one
[
'#type' => 'selectați',
'#title' => $this->t('Dropdown one'),
'#options' => $dropdownOneOptions,
'#empty_option' => '---',
'#weight' => 1,
'#ajax' => [
'eveniment' => 'schimbare',
'callback' => [$this, 'getDropdownTwoOptions'],
'wrapper' => 'dropdown-două',
'progres' => [
'type' => 'throbber',
],
],
'#name' => 'dropdown_one',
]
dropdown_two
[
'#type' => 'selectați',
'#title' => $this->t('Derulant doi'),
'#options' => [],
'#empty_option' => '---',
'#weight' => 2,
'#ajax' => [
'eveniment' => 'schimbare',
'callback' => [$this, 'getDropdownThreeOptions'],
'wrapper' => 'dropdown-trei',
'progres' => [
'type' => 'throbber',
],
],
'#name' => 'dropdown_two',
'#prefix' => sprintf('<div id="%s">', 'dropdown-two'),
'#sufix' => '</div>',
'#states' => [
'invizibil' => [
':input[name="dropdown_one"]' => ['value' => ''],
],
],
]
dropdown_trei
[
'#type' => 'selectați',
'#title' => $this->t('Derulant trei'),
'#options' => [],
'#empty_option' => '---',
'#weight' => 3,
'#name' => 'dropdown_three',
'#prefix' => sprintf('<div id="%s">', 'dropdown-three'),
'#sufix' => '</div>',
'#states' => [
'invizibil' => [
':input[name="dropdown_two"]' => ['value' => ''],
],
],
]
Opțiunile câmpurilor selectate din meniul dropdown doi și dropdown trei sunt actualizate/setate prin apelul AJAX respectiv, cu HtmlCommand()
.
$răspuns = AjaxResponse nou();
$wrapper_id = $triggeringElement['#ajax']['wrapper']; // „menusul derulant-doi” sau „menajul derulant-trei”
$response->addCommand(new HtmlCommand("#$wrapper_id select", $html)); // $html = "<option value='foo'>bar</option>...";
Încerc să îmi dau seama de ce acest caz nu funcționează:
Dată în meniul drop-down, este selectată o opțiune care nu este goală
Și se afișează meniul drop-down doi
Și o opțiune care nu este goală este selectată în meniul drop-down doi
Și se afișează meniul derulant trei
Când selectez opțiunea goală din meniul drop-down
Apoi, meniul drop-down doi și drop-down trei nu ar trebui să fie afișate
Din păcate, când rulez acest set de acțiuni, meniul drop-down trei rămâne vizibil și nu-mi dau seama de ce.
Chiar as aprecia daca cineva m-ar putea ajuta.