提交按钮不在Symfony 2.x表单中呈现

时间:2015-11-12 18:28:21

标签: forms symfony twig

我正在创建一个使用Symfony Form构建器,并使用twig渲染它。

这是我的表单构建器代码:

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'
      )
    ))
    ;
  }

我的树枝模板是这样的:

{{ 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) }}

在这种情况下,除了提交按钮之外,我按预期获得了所有内容。它不是在表单构建器中创建的自定义提交按钮,而是呈现带有标签create的默认提交按钮。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎这是“提交”名称的一些问题。例如,下一个示例有效:

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

然后在树枝模板中:

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

更新:根据http://symfony.com/doc/current/reference/forms/twig_reference.html,您可以使用{{ form_widget(form.submit, {'label': 'submit'}) }}。因此,下一行会使用“提交”名称提交提交:

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

在这种情况下,您无需向FormType添加提交。