我有一个带有文件字段的表单,我希望只有在创建记录时才强制使用此字段,而不是在更新时。 在buildForm我只有这个字段:
->add('file', 'file', array(
'required' => false,
))
并在控制器中检查id以确定是否插入或更新
感谢
答案 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