Symfony未渲染的表单字段置于Null

时间:2018-08-16 12:24:52

标签: symfony twig

我有一个表单,可以说:formField1,formField2,... formField10。

在我的树枝视图中,我希望显示5个第一表格字段。

我的代码看起来像这样:

{{ form_widget(form.formField1, {'attr': {'class': 'form-control'}}) }}
{{ form_widget(form.formField2, {'attr': {'class': 'form-control'}}) }}
{{ form_widget(form.formField3, {'attr': {'class': 'form-control'}}) }}
{{ form_widget(form.formField4, {'attr': {'class': 'form-control'}}) }}
{{ form_widget(form.formField5, {'attr': {'class': 'form-control'}}) }}

因此,当我提交此文件时,这些字段就可以使用:在数据库中一切正常。

但是对于其他字段(6到10),我的数据库的所有内容都显示为“ NULL” ...

所以我目前的解决方案是执行以下操作:

<div class="form-group hidden">
     <div class="col-md-10 col-sm-9 col-xs-12">
          {{ form_rest(form) }}
     </div>
</div>

但这不是很安全(F12 +删除隐藏的属性:))

有人知道如何不触及其他领域吗?

我也尝试禁用它们:

{{ form_widget(form.formFieldX, {'attr': {'class': 'form-control'}, 'disabled': true}) }}

但它也不起作用(设置为NULL)。

1 个答案:

答案 0 :(得分:1)

唯一安全的解决方案是将这些字段排除在表单类型之外(例如,通过添加选项以在某些条件下打开/关闭这些字段)。

默认情况下,Form组件清除(即将它们设置为null)属于表单类型但不属于请求的所有表单字段。可以将其关闭,但是此选项旨在允许支持HTTP PATCH请求。此外,如果您仍将字段保留为表单类型,那么用户也可以为其手动添加所需的HTML代码并提交,这意味着它们将再次被更改。