Symfony 2 - FormView :: setRendered对面

时间:2014-05-12 16:57:42

标签: symfony twig

FormView公开了setRendered方法,它告诉Twig该字段已经被渲染。它对于从form_rest隐藏字段很有用。

在我的情况下,我想在特定行之前放置form_rest - 所以我需要使用setRendered。但是我无法确定这一行,因为没有直接的方法可以做到这一点。示例代码:

{% do form.frequency.setRendered %}
{{ form_rest(form) }}

{# Something like this #}
{% do form.frequency.unsetRendered %}

<div class="frequency form-group">
{{ form_row(form.frequency) }}
</div>

有什么能像这样的东西吗?或者我是手工渲染整个形式的? FormView :: rendered是私有的,FormView :: setRendered不接受参数。感谢帮助。

2 个答案:

答案 0 :(得分:1)

我知道,这是一个老问题,但这是一种方法。

{{ form_start(form) }}
{# render the fields in different order, name first #}
{{ form_row(form.name) }}

{# render the the rest, except submit button #}
{% for child in form %}
    {% if child.vars.name not in ['submit'] %}
        {{ form_row(child) }}
    {% endif %}
{% endfor %}

{# render the submit manually #}
<div class="pull-right">
    {{ form_widget(form.submit) }}
</div>

{{ form_rest(form) }}

答案 1 :(得分:0)

表单组件的当前实现没办法:s我能看到的唯一解决方案是创建一个twig函数,它将使用反射机制来修改私有属性......

编辑:或者您可以向Symfony存储库提交拉取请求以允许它与您的用例一起使用。