Drupal 8 & Drupal 9 - Passer des variables à un formulaire

Depuis un controller :

// Variables à transmettre au formulaire
$data = ['lalala' => 'lilili'];
// Avec l'injection de dépendances
$this->formBuilder()->getForm(Drupal\mon_module\Form\TriggerForm::class, $data);

// Sinon, sans l'injection de dépendances
$form = \Drupal::formBuilder()->getForm('Drupal\mon_module\Form\TriggerForm', $data);

Récupération des données dans le formulaire

public function buildForm(array $form, FormStateInterface $form_state) {
  // Récupération des données
  $data = $form_state->getBuildInfo()['args'][0];

  // Définition du formulaire
}

Il est possible de passer plusieurs variables

// Variables à transmettre au formulaire
$data = ['lalala' => 'lilili'];
$doto = ['lululu' => 'lelele'];
// Avec l'injection de dépendances
$this->formBuilder()->getForm(Drupal\mon_module\Form\TriggerForm::class, $data, $doto);

// Sinon, sans l'injection de dépendances
$form = \Drupal::formBuilder()->getForm('Drupal\mon_module\Form\TriggerForm', $data, $doto);
public function buildForm(array $form, FormStateInterface $form_state) {
  // Récupération des données
  $data = $form_state->getBuildInfo()['args'][0];
  $doto = $form_state->getBuildInfo()['args'][1];

  // Définition du formulaire
}

 

Contenus en rapport

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...