niyasc
niyasc

Reputation: 4490

Submit Button is not rendered in Symfony 2.x Form

I'm creating a from using Symfony Form builder, and rendering it using twig.

Here is my form builder code:

public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder
    ->add('name', 'text', array(
      'required' => TRUE,
    ))
    ->add('link', 'text', array(
      'required' => TRUE,
    ))
    ->add('submit', 'submit', array(
      'attr' => array(
        'class' => 'btn btn-primary btn-sm custom-btn'
      )
    ))
    ;
  }

And my twig template is like this:

{{ form_start(form)}}
<div>
  {{ form_label(form.name) }}
  {{ form_widget(form.name) }}
</div>

<div>
  {{ form_label(form.link) }}
  {{ form_widget(form.link) }}
</div>

<div>
  {{ form_widget(form.submit) }}
</div>

{{ form_end(form) }}

In this case, I'm getting everything as expected, except the submit button. Instead of custom submit button created in form builder, it is rendering default submit button with a label create.

What I'm doing wrong here?

Upvotes: 0

Views: 1084

Answers (1)

Sergio Ivanuzzo
Sergio Ivanuzzo

Reputation: 1922

Seems it is some issue with 'submit' name. For example, next example works:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        .... // your fields here
        ->('my_button', 'submit');
}

Then in the twig template:

<div>
  {{ form_widget(form.my_button) }}
</div>

UPDATED : according to http://symfony.com/doc/current/reference/forms/twig_reference.html you can use {{ form_widget(form.submit, {'label': 'submit'}) }}. So next lines renders submit with 'submit' name:

{{ form_start(form) }}
   {{ form_widget(form.text) }}
   {{ form_widget(form.code) }}
   {{ form_widget(form.submit, {'label': 'submit'}) }}
{{ form_end(form) }}

And you don't need to add submit to your FormType in this case.

Upvotes: 1

Related Questions