Injecter des valeurs avant validation du formulaire Symfony

Lors de la création d’un formulaire Symfony, vous savez (ou pas) que l’on peut :

– mettre des valeurs par défaut sur les champs d’un formulaire dans le formulaire en lui-même avec SetDefault().
Exemple : $this->setDefault(’email’, ‘Your Email Here’);

– injecter des valeurs dynamiquement en étendant la méthode save() du formulaire

– injecter des valeurs sur l’objet du formulaire dans l’action avant de sauvegarder le formulaire.
Exemple : $form->getObject()->setEmail(‘Your Email Here’);


Mais si vous avez un validateur (la valeur du champ doit être unique par exemple), celui-ci ne sera pas appliqué si vous procédez de cette façon dans l’action.
Dans ce cas, vous pouvez ajouter vos valeurs dynamiques sur les paramètres de requêtes renvoyés en post/get par le formulaire. Voilà ce que cela peut donner :

if ($request->isMethod('post'))
{
  $form_param = $request->getParameter($this->form->getName());
  // inject some form values in request parameter before bind, 
  // so that values will be validated by form
  $form_param['email'] = $this->email_value;
  //
  $this->form->bind($form_param);
  if ($this->form->isValid())
  {
    $this->form->save();
  }
}

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*