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

时间:2013-08-07 10:13:42

标签: entity-framework symfony

我正在使用symfony2,我有一个包含多个字段的表单,其中一个字段称为视频。 可以在更新表单中删除该字段,但不能在插入表单中删除吗?

(表格)YoutubepostType.php:

  $builder->add('tituloVideo')
          ->add('descripcionVideo')
          ->add('tagsVideo')
          ->add('video', 'file', array('required' => false));

先谢谢大家。

1 个答案:

答案 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 %}

表单渲染器无论如何都会将它添加到表单的末尾(根据我的经验),这样就无法工作了。