1

I'm working with symfony2, and I have a form with a number of fields, one of them is called video. Could be possible remove that field in the update form but not in the insert form?

(Form) YoutubepostType.php:

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

Thank you all in advanced.

4

1 回答 1

0

如果您的控制器直接定义所有表单字段,那么您可以在定义主要字段后添加一个 if 语句,以在添加video字段之前检查它是否不是更新,例如

$builder->add('tituloVideo')
    ->add('descripcionVideo')
    ->add('tagsVideo');
if($myMethod != 'update') {
    $builder->add('video', 'file', array('required' => false));
}

但是假设您已经定义了一个自定义表单字段集合,那么该字段已经在您的表单构建器对象中定义,并且您只是在控制器中加载此集合,那么在这种情况下,您只需将其删除:

$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 %}

无论如何,表单渲染器只会将其添加到表单的末尾(根据我的经验),因此这是行不通的。

于 2014-05-22T00:42:57.857 回答