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不接受参数。感谢帮助。
答案 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存储库提交拉取请求以允许它与您的用例一起使用。