我正在使用symfony2,我有一个包含多个字段的表单,其中一个字段称为视频。 可以在更新表单中删除该字段,但不能在插入表单中删除吗?
(表格)YoutubepostType.php:
$builder->add('tituloVideo')
->add('descripcionVideo')
->add('tagsVideo')
->add('video', 'file', array('required' => false));
先谢谢大家。
答案 0 :(得分:0)
如果您的控制器直接定义所有表单字段,那么您可以在定义主要字段后添加if语句,以在添加video
字段之前检查它是否不是更新,例如
$builder->add('tituloVideo')
->add('descripcionVideo')
->add('tagsVideo');
if($myMethod != 'update') {
$builder->add('video', 'file', array('required' => false));
}
但假设您已经定义了自定义form Collection of fields,那么该字段已在您的表单构建器对象中定义,您只是在Controller中加载此集合,那么在这种情况下您只需将其删除:
$form = $this->createForm(new MyCollectionType(), $entity);
if($myMethod == 'update') {
$form->remove('video');
}
如果它是来自关联实体的字段,则首先获取实体并从中删除它:
$form->get('myEntityName')->remove('myFieldName')
注意:如果您手动创建表单模板,并且只是尝试将其隐藏在模板中(例如在if语句中设置),则无法使用:
{% if $myMethod == 'update' %}
{{ form_row(form.video) }}
{% endif %}
表单渲染器无论如何都会将它添加到表单的末尾(根据我的经验),这样就无法工作了。