【发布时间】:2016-07-28 14:43:19
【问题描述】:
假设我正在使用Symfony Form Component 呈现一个只有两个字段(用户名和电子邮件)的简单表单
我使用form_row() 渲染两个字段以添加自定义css,然后调用form_widget() 渲染其余元素(另一个选项是form_rest())
我正在寻找的是一种预先检查form_widget() 是否会打印任何对象的方法,以便在有额外字段的情况下添加自定义html。
我的做法是这样的:
//app/form/index.html.twig
{# Other template code #}
...
{# Rendering form: #}
{{ form_start(form) }}
{{ form_row(form.username) }}
{{ form_row(form.email) }}
{% set form_rendered = form_widget(form) %}
{% if form_rendered %}
<h3>Other fields</h3>
{{ form_rendered | raw }}
{% endif %}
{{ form_end(form) }}
{# End form #}
...
{# Other template code #}
但是,我对此并不满意。有没有更好的办法?
编辑:当使用 CSRF 保护(默认激活)时,之前的代码将始终打印 <h3>Other fields</h3>,因为表单有一个额外的隐藏字段用于我们没有打印的令牌。我们需要在某个地方使用{{ form_row(form._token) }} 渲染它。
【问题讨论】:
标签: php symfony twig symfony-forms