我有一个可以激活的用户列表。
对于所有用户,我使用用户可以拥有的角色创建一个选择字段。
在渲染过程中,我只渲染活动用户的字段。
表单显示完成后,我使用
{{form_end(form,{' render_rest':false})}}
避免渲染不必要的字段。那些未提取的字段阻碍了表单的验证。 我试图创建一个隐藏的选择字段,但失败了。
以下是相关代码:
$form = $this->createFormBuilder()->getForm(); //create empty form
foreach ($HRsInThisProject as $key => $HR)
{
$form->add('roleOf_'.$key, 'choice', array('choices' => $rolesListForForm,'required' => true,'data' => $HR['role'], 'label' => false, ));
}
$form->add('save', 'submit', array('label' => 'Save'));
在我的树枝上,我有:
<table>
<tr>
<td>User ID</td>
<td>Name</td>
<td>Role</td>
<td>Started</td>
</tr>
{% for key, HR in HRs %}
{% if HR.is_active %}
<tr>
<td>{{ key }}</td>
<td>{{ HR.name }}</td>
<td>{{ form_row(form['roleOf_' ~ key]) }}</td>
<td>{{ HR.started_at|date('Y-m-d H:i:s') }}</td>
</tr>
{% endif %}
{% endfor %}
</table>
<br>
{{ form_row(form.save) }}
{{ form_end(form, {'render_rest': false}) }}
这就是我想要的(注意只显示相关字段):
另一方面,如果我使用:
{{form_end(form)}}
然后代码可以工作,但我看到显示了不必要的字段:
我还尝试将不必要的字段设为非必需字段,但问题仍然存在。
有什么想法吗?
答案 0 :(得分:0)
要避免呈现该字段,您必须将其从FormType
中删除,并为实体中的该字段指定默认值
Class User {
protected $unnecessary = "Some Value";
}
或者您可以使用FormEvents
为该属性分配默认值
http://symfony.com/doc/current/components/form/form_events.html
或者您可以将该字段呈现为隐藏
http://symfony.com/doc/current/reference/forms/types/hidden.html
最重要的是,一旦您向FormType
添加了一个属性,该字段将被确保呈现。
答案 1 :(得分:0)
NULL
如果未呈现表单的字段,则其值将以<input type='text' pattern='^(((\d|1[0-1])?(0|5)|120)|)$' />
的形式发送。
因此,如果您已为此字段设置了值,则该字段将无效。