如何使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>中。 这样,“他们仍然在那里”(通过一切手段正常处理),但用户不可见。

希望这可以帮助…