在Symfony2中,我有一个表单,其中包含一个预先创建的记录的图像上传。
当表单第一次呈现时,未设置图像,并且在表单提交时应该是必需的。在后续的表单提交中,如果文件已经上传并且存储了路径,那么表单提交应该通过。
我无法弄清楚如何实现此条件验证。 我的表单包含
public function buildForm(FormBuilderInterface $builderInterface, array $options)
{
parent::buildForm($builderInterface, $options);
$builderInterface
->add('logoFile', 'file', array(
'required' => true,
))
// ...
}
但是,只有在未填充实体上的特定字段时才应强制执行。
答案 0 :(得分:1)
您应该查看Symfony's form events。
在你的情况下,我认为这样的事情:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::/*event*/, function (FormEvent $event) {
$object = $event->getData();
$form = $event->getForm();
$form->add('logoFile', 'file', array(
'required' => !$object || !$object->getLogoFile(),
));
});
}
可以满足您的需求