【问题标题】:Symfony2 - form_start function customise in twigSymfony2 - 在树枝中自定义 form_start 函数
【发布时间】:2026-02-07 10:15:02
【问题描述】:

表单助手 form_startform_end 在 twig 中很有用:

{{ form_start(form) }}
{{ form_end(form) }}

我可以自定义一些参数,例如methodaction。但我需要自定义其他参数,如class 或添加form-enctype

我可以吗?我应该把它设置成FormType.php吗?

从现在开始,我只是尝试将我的自定义值添加到 twig 函数中,如下所示:

{{ form_start(form, {'class': 'myclass', 'action': 'myaction'}) }}
// fields...
{{ form_end(form, {'render_rest': true}) }}

但在这种情况下,例如,class 不会出现。

【问题讨论】:

    标签: forms symfony twig symfony-forms symfony-2.3


    【解决方案1】:

    由于form_start 具有following signature

    form_start(view, variables)
    

    因为class 不代表有效的变量名。您需要使用attr 属性将您的类指定为key/value 数组。

    那么,试试……

    {{ form_start(form, {'action': 'myaction', 'attr': {'class': 'your_class_name'}}) }}
    

    还有……

    • 您应该确保您的类型文件定义明确,以便让form_start 助手设置正确的form-enctype

    • 自 Symfony 2.3 起,form_enctype(formView) 助手已被弃用。

    【讨论】:

    • 非常感谢!该解决方案完美运行。然后,我不必使用form-enctype 也不管我是否上传了文件,因为form_start() 自动设置了“form-enctype”。那是正确的吗?但是在表单标签中我看不到它。
    • 为什么classvariables 数组中重复?
    • 建议的代码 sn-p 与您的解释相反,因为您已将 class 作为变量!
    • 应该是{{ form_start(form, {'attr': {'class': 'your-class'} }) }}
    • id 也是如此。它还必须放在attr 数组中。
    最近更新 更多