Astuce : mettre plusieurs formulaires sur une même page symfony2
je met le code puis j'explique un peu
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
public function indexAction()
{
$commentaire = new Commentaire();
$commentateur = new Commentateur();
$form1 = $this->createFormBuilder($commentateur)
->add('speudo','text')
->add('password','password')
->add('adresseemail','text')
->getForm();
$form2 = $this->createFormBuilder($commentaire)
->add('contenu','textarea')
->add('datecreationcommentaire','datetime', array(
'widget' => 'single_text',
'format' => 'dd-MM-yyyy hh:mm:ss',
))
->add('idcommentateur')
->getForm();
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form1->bind($request);
if ($form1->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($commentateur);
$em->flush();
return new Response('ok commentateur');
}
}
if ($request->getMethod() == 'POST') {
$form2->bind($request);
if ($form2->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($commentaire);
$em->flush();
return new Response('ok commentaire');
}
}
return $this->render('LaLingerieBundle:Default:index.html.twig', array(
'form' => $form1->createView(),
'fom2' => $form2 ->createView()));
} |
On construit deux formulaires form1 et form2 que vous pourrez ajouter un à même template twig.
les deux premiers tests attendent la validation d'un formulaire hors comme au commencement aucun formulaire n'a été afficher ces deux premier tests ne sont pas validé.
Puis enfin les deux formulaire sont affichés sur le template.
Et là un formulaire sur les deux peut être valider par un des deux tests.
voilà bonne lecture. Il faut faire attention aux return.
Code:
1 2 3 4
|
return $this->render('LaLingerieBundle:Default:index.html.twig', array(
'form' => $form1->createView(),
'fom2' => $form2 ->createView())); |
Ce dernier return affiche les deux formulaires mais n'arrétent pas le traitement. En effet il sert à retourner les deux formulaires et les affiche.
Puis il y a attente de validation d'un des formulaires.