Symfony2 - 在Twig中自定义form_start函数

28

表单帮助程序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没有出现。

1个回答

56

form_start 具有以下签名

form_start(view, variables)

由于class不代表有效的变量名,您需要使用attr属性将您的类指定为键/值数组。

然后尝试...

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

同时...

  • 要确保您的类型字段(Type fileds)定义良好,以便让form_start助手设置正确的form-enctype

  • form_enctype(formView)助手自Symfony 2.3版本起已经弃用。


非常感谢!这个解决方案完美地运行了。 那么,我不需要使用form-enctype,即使我有文件上传,因为form_start()会自动设置form-enctype。这是正确的吗?但是在表单标记中我没有看到它。 - Roberto Rizzi
6
为什么variables数组中有两个相同的class - A.L
4
提议的代码片段与您的解释相反,因为您将“class”作为变量使用了! - Peyman Mohamadpour
4
应该是 {{ form_start(form, {'attr': {'class': 'your-class'} }) }} - dotoree
同样适用于 id。它也必须放在 attr 数组中。 - mcmurphy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接