如果尚未设置,则需要Symfony表单验证图像

时间:2014-10-30 13:44:14

标签: forms validation symfony

在Symfony2中,我有一个表单,其中包含一个预先创建的记录的图像上传。

当表单第一次呈现时,未设置图像,并且在表单提交时应该是必需的。在后续的表单提交中,如果文件已经上传并且存储了路径,那么表单提交应该通过。

我无法弄清楚如何实现此条件验证。 我的表单包含

public function buildForm(FormBuilderInterface $builderInterface, array $options)
{
    parent::buildForm($builderInterface, $options);
    $builderInterface
        ->add('logoFile', 'file', array(
            'required' => true,
        ))
    // ...
}

但是,只有在未填充实体上的特定字段时才应强制执行。

1 个答案:

答案 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(),
        ));
    });
}

可以满足您的需求