Entity framework 删除更新表单实体(Symfony2)中的字段
我正在使用symfony2,我有一个表单,有很多字段,其中一个叫做video。 是否可以在更新表单中删除该字段,但不能在插入表单中删除 (格式)YoutubepostType.php:Entity framework 删除更新表单实体(Symfony2)中的字段,entity-framework,symfony,Entity Framework,Symfony,我正在使用symfony2,我有一个表单,有很多字段,其中一个叫做video。 是否可以在更新表单中删除该字段,但不能在插入表单中删除 (格式)YoutubepostType.php: $builder->add('tituloVideo') ->add('descripcionVideo') ->add('tagsVideo') ->add('video', 'file', array('required'
$builder->add('tituloVideo')
->add('descripcionVideo')
->add('tagsVideo')
->add('video', 'file', array('required' => false));
感谢高级版中的所有人。如果您的控制器直接定义了所有表单字段,那么您只需在定义主字段后添加一条If语句,在添加
视频
字段之前检查它是否为更新,例如
$builder->add('tituloVideo')
->add('descripcionVideo')
->add('tagsVideo');
if($myMethod != 'update') {
$builder->add('video', 'file', array('required' => false));
}
但是,假设您已经定义了自定义字段,那么该字段已经在form builder对象中定义,并且您正在控制器中加载此集合,那么在这种情况下,您只需删除它:
$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 %}
根据我的经验,表单渲染器只会将其添加到表单的末尾,所以这不起作用 最简单的方法是在模板中隐藏字段。如果您真的想通过检查enity本身来实现这一点,那么您需要在表单中添加一个侦听器:好的,Cerad,谢谢您的回答。根据我的经验,如果模板中没有定义表单字段,表单呈现器将在默认情况下在表单末尾再次添加它。因此,您不能简单地在模板中“隐藏”它。Cerad对Symfony的了解比我多一百万倍,所以我不确定这是否是他的建议,但我认为这不起作用。