Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 删除更新表单实体(Symfony2)中的字段_Entity Framework_Symfony - Fatal编程技术网

Entity framework 删除更新表单实体(Symfony2)中的字段

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'

我正在使用symfony2,我有一个表单,有很多字段,其中一个叫做video。 是否可以在更新表单中删除该字段,但不能在插入表单中删除

(格式)YoutubepostType.php:

  $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的了解比我多一百万倍,所以我不确定这是否是他的建议,但我认为这不起作用。