【问题标题】:Submit Button is not rendered in Symfony 2.x Form提交按钮未在 Symfony 2.x 表单中呈现
【发布时间】:2015-11-12 18:28:20
【问题描述】:

我正在使用 Symfony 表单构建器创建一个,并使用 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 的默认提交按钮。

我在这里做错了什么?

【问题讨论】:

    标签: forms symfony twig


    【解决方案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'}) }}。因此,下一行呈现带有 'submit' 名称的提交:

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

    在这种情况下,您不需要将提交添加到您的 FormType。

    【讨论】:

    • 完美运行。但在这种情况下,表单也会呈现默认按钮。如何避免?
    • 它总是来的 :(。如果我删除 form_start 和 form_end,那么只会出现默认的一个。如果我使用自定义名称作为提交按钮,删除它们后,只会出现自定义按钮。但是当然,它不会起作用,因为在这种情况下不会呈现表单标签。
    • 好的。将属性添加到树枝形式的作品。但是直接以树枝形式添加属性而不是在FormBuilder中添加是一种好习惯吗?
    • @niyasc 为什么不呢?我有同样的问题:直接在树枝中添加类是一种好习惯吗?在模板中包含业务逻辑是不好的做法,但添加标签或一些 attr 不是业务逻辑。
    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多