如何使form_rest()不显示与Symfony2的字段?
我已经开始使用Symfony2了,但是我遇到了一些问题。 我想手工渲染字段,但它不起作用,因为我的字段还与我的form_rest()
函数一起显示,所以我有两个相同的字段。
这是我的代码:
<div> {{ form_errors(form.contenu) }} <textarea id="{{ form.contenu.vars.id }}" name="{{ form.contenu.vars.full_name }}">{{ form.contenu.vars.value }}</textarea> </div>
而在表格的最后,我必须这样做:
{{ form_rest(form) }}
但它显示“contenu”字段:(
你有什么问题的想法?
另一种select是明确地标记字段呈现:
{% do form.contenu.setRendered %}
{{ form_rest(form) }}
在渲染每个字段“手动”后最后。 如果你使用它作为CSRF令牌,你总是可以使用:
{# Token CSRF #} {{ form_widget(form._token) }}
另一个在我看来不那么hacky的方式来做到这一点:
{{ form_end(form, {'render_rest': false}) }}
这是从官方文档 (V3.0),所以这是我猜的几乎最好的做法 。
你不想展示一些领域的情况表明devise得很糟糕的forms。 你可以在它的__construct
添加一些参数来使它有条件(比如包含/排除一些字段),或者你可以创build单独的Form
类(在我看来,这有点矫枉过正)。
几个月前,当用户插入/更新logging的时候,表单有所不同。 这是这样的:
... public function __construct($isUpdateForm){ $this->isUpdateForm= $isUpdateForm; } public function buildForm(FormBuilder $builder, array $options){ .... $builder->add('some_filed', 'text', ..... ); if ( $this->isUpdateForm ){ $builder->add(.....); } .... } ....
如果由于某些原因,你不能重构窗体类,你仍然可以显示不需要的字段,但将其包装到具有CSS display:none
属性的<div>
中。 这样,“他们仍然在那里”(通过一切手段正常处理),但用户不可见。
希望这可以帮助…