scamp scamp - 1 year ago 66
PHP Question

Symfony2 : Two forms in a same page

I've got two forms in a same page.

My problem is when I tried to submit a form, it's like it tried to submit the second form below in the page as well.

As follow, you can find my 2 forms :

public function createSuiviForm() {

return $form = $this->createFormBuilder(null)
->add('numero', 'text', array('label' => 'N° : ',
'constraints' => array(
new Assert\NotBlank(array('message' => 'XXXX')),
new Assert\Length(array('min' => 19, 'max' => 19, 'exactMessage' => 'XXX {{ limit }} XXX')))))
->add('xxxx', 'submit')

public function createModificationForm() {

return $form = $this->createFormBuilder(null)
->add('modification', 'submit', array('label' => 'XXXXXXXXXXXXXXXXXXXX'))

My second form as only a submit button.

I passed them to my render and display them by using :

<div class="well">
<form method="post" action='' {{form_enctype(form)}} >
{{ form_widget(form) }}
<input type="submit" class="btn btn-primary"/>
<div class='errors'>
{{ form_errors(form) }}

'form' is the name of my variable to the first form
and 'update' for my second form.

When I attempted to submit my second form, I need to click twice and finally I get :

"This form should not contain extra fields."
And all non valid input for the remainding form.

I tried to add validation_group to false but to no avail.

I don't understand why I got this error because my forms are not embedded at all

I hope you will understand...

Answer Source

You have to treat the forms separately:

if('POST' === $request->getMethod()) {

    if ($request->request->has('form1name')) {
        // handle the first form  

    if ($request->request->has('form2name')) {
        // handle the second form  

This is perfectly explained in Symfony2 Multiple Forms: Different From Embedded Forms