[英]Customizing Symfony2 forms
我最近开始使用Symfony2框架。
对于已经使用的任何错误术语,我已经表示歉意。
我想自定义表单在应用程序中的显示方式。
更具体地说,在我的Twig文件中,我使用
{{ form(forms) }}
我想自定义表单的布局。 我知道表格的每一行都可以扩展为
{{ form_start(forms) }}
//...
<div>
{{ form_label(forms.field) }}
{{ form_errors(forms.field) }}
{{ form_widget(forms.field) }}
</div>
//...
{{ form_end(forms) }}
使用以这种格式编写的表单,我可以将所需的自定义添加到布局中。
这是问题所在:我的表单没有预定义的行数,但是这些行取决于数据库中存储的某些值。 我想在树枝上做的是这样的
{{ form_start(forms) }}
{% for field in forms %}
<div>
{{ form_label(forms.field) }}
{{ form_errors(forms.field) }}
{{ form_widget(forms.field) }}
</div>
{% endfor %}
{{ form_end(forms) }}
不幸的是,此for循环不起作用。 我也研究了( 如何自定义表单渲染 ),但是我认为这不适合我的情况(是吗?)。
有什么建议吗?
预先感谢您的帮助。
您需要自定义form_row方法http://symfony.com/doc/current/cookbook/form/form_customization.html#customizing-the-form-row
// my_form.html.twig
{% extends 'form_div_layout.html.twig' %}
{% block form_row %}
<div>
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endblock form_row %}
// view.html.twig
{% form_theme form 'my_form.html.twig' %}
{{ form_start(form) }}
作为一种更灵活的解决方案,您可以直接执行所需的操作,而无需更改将表单上所有表单行主题化的方式。
假设您的主表单包含一个Collection(如果没有,现在让我们看看它是怎么完成的!),该subforms
表单中包含可变数量的项(每个都是另一种表单),您可以执行以下操作:
{{ form_start(forms) }}
{% for subform in forms.subforms %}
<div>
{{ form_label(subform.fieldname) }}
{{ form_errors(subform.fieldname) }}
{{ form_widget(subform.fieldname) }}
</div>
{% endfor %}
{{ form_end(forms) }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.