Folosesc următorul cod pentru un formular.
funcția publică buildForm(array $form, FormStateInterface $form_state) {
$region_options = static::getFirstDropdownOptions();
$form['vvv_region'] = [
'#type' => 'selectați',
'#title' => $this->t('câmp de selectare a regiunii'),
'#options' => $region_options,
'#empty_option' => t('- Selectați regiunea -'),
'#ajax' => [
'callback' => '::myAjaxCallback',
'disable-refocus' => FALSE,
'eveniment' => 'schimbare',
'wrapper' => 'editare-ieșire',
'progres' => [
'type' => 'throbber',
'message' => $this->t('Se verifică intrarea...'),
],
]
];
$region_selected = $form_state->getValue('vvv_region');
$city_options = static::getSecondDropdownOptions($region_selected);
$form['ieșire'] = [
'#type' => 'selectați',
'#title' => $this->t('câmp de selectare a orașului'),
'#options' => $city_options,
'#prefix' => '<div id="edit-output">',
'#sufix' => '</div>',
'#empty_option' => t('- Selectați orașul -'),
'#default_value' => '',
'#ajax' => [
'callback' => '::cityAjaxCallback',
'disable-refocus' => FALSE,
'eveniment' => 'schimbare',
'wrapper' => 'edit-city',
'progres' => [
'type' => 'throbber',
'message' => $this->t('Se verifică intrarea...'),
],
]
];
$city_select = $form_state->getValue('output');
$suburb_options = static::getSuburbDropdownOptions($city_select);
$form['sur'] = [
'#type' => 'selectați',
'#options' => $suburb_options,
'#prefix' => '<div id="edit-city">',
'#sufix' => '</div>',
'#empty_option' => t('- Selectează suburb -'),
'#default_value' => matrice(''),
];
returnează $form;
}
funcția publică myAjaxCallback(matrice &$form, FormStateInterface $form_state) {
$region_selected = $form_state->getValue('vvv_region');
$city_options = static::getSecondDropdownOptions($region_selected);
if ($form_state->getErrors()) {
\Drupal::messenger()->addError($region_selected);
$form_state->setRebuild();
}
$form['outpout']['#options'] = $city_options;
returnează $form['ieșire'];
}
funcția publică cityAjaxCallback(matrice &$form, FormStateInterface $form_state) {
$city_select = $form_state->getValue('output');
$sur_data = static::getSuburbDropdownOptions($city_select);
if ($form_state->getErrors()) {
\Drupal::messenger()->addError($city_select);
$form_state->setRebuild();
}
$form['sur']['#options'] = $sur_data;
returnează $form['sur'];
}
Când este trimis formularul, primesc următoarea eroare.
A fost identificată o selecție nevalidă. Vă rugăm să contactați administratorul site-ului.
Ce este în neregulă cu codul pe care îl folosesc?