symfony2:如何在更新时不需要创建表单字段

时间:2015-02-17 13:04:47

标签: symfony

我有一个带有文件字段的表单,我希望只有在创建记录时才强制使用此字段,而不是在更新时。 在buildForm我只有这个字段:

->add('file', 'file', array(
            'required'    => false,
        ))

并在控制器中检查id以确定是否插入或更新

感谢

2 个答案:

答案 0 :(得分:3)

在您的表单类中添加:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setRequired([
        'update',
    ]);
}

然后,当您创建表单时使用此:

$form = $this->createForm('formName', $object, array(
            'update' => $entity->getId==null?false:true,
       ));

然后,在您的表单中,在$ options数组中,您可以使用$ options [' update']。 例如:

->add('file', 'file', array(
            'required'    => !$options['update'],
        ))

答案 1 :(得分:0)

处理此问题的正确方法是使用FormEvents http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html