Comment Créer un formulaire qui a de champs interdépendant (Drupal 8)

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bien. J'ai veux créer un formulaire qui a de champs autocomplete.

Par exemple

Le champs pays contient une liste de pays et les champs régions contient la liste de régions.
Concernant l'autocompletion , si le pays ne pas sélectionne l' autocompletion se fera par l'ensemble de région de tous les pays. Sinon en fonction du pays passer en paramètre.

Comment ai-je fait?

Premièrement, j' ai crée un champs pays, puis j'ai mit l'attribut "#ajax" pour le fonction callback.

$form['pays'] = array(
'#type' => 'select',
'#title' => t('Pays'),
'#description' => t("Choose at least one country."),
"#empty_option"=>t('- select -'),
'#options' => array('france'=>'france','angletere'=>'angletere','maroc'=>'maroc','kenya'=>'kenya'),
'#ajax' => array(
'event' => 'change',
'wrapper' => 'regions-wrapper',
// Could also use ['::regionCallback'].
'callback' => [$this,'regionCallback'],
'method' => 'replace',
),
);
Deuxièmement le champs régions avec comme attribut autocomplete_route_name sans paramétré.
$form['regions'] = array(
'#type'=> 'textfield',
'#title' => $this->t('Region'),
'#description' => t("Tapez your region"),
'#autocomplete_route_name'=>'fapi.oxil_autocomplete',
'#autocomplete_route_parameters'=>array(),
);

Et fin fonction Callback, qui récupéré le champs quand il change [ 'event']

public function regionCallback(array $form, FormStateInterface $form_state){
$pays = $form_state->getValue('pays');
$description = $form_state->isValueEmpty('pays')? t(" Not changed yet"): $form_state->getvalue('pays') ;

$form['regions'] = array(
'#type'=> 'textfield',
'#title' => $this->t('Region'),

// Significant of Part
'#value'=>t($pays), // #default_value
'#description'=> t("Watch your choice ").$description,
'#autocomplete_route_name'=>'fapi.oxil_autocomplete',
'#autocomplete_route_parameters'=>array('pays'=>$pays),
);
return $form['regions'];

}
Mais quand on sélectionne un pays, la fonction callback marche très bien , excepté ces attributs ne marche pas
- #default_value
- #description
- '#autocomplete_route_name'=>'fapi.oxil_autocomplete',
- #autocomplete_route_parameters'=>array('pays'=>$pays),

Merci pour vos possibles réponse.

Version de Drupal :