不使用@Assert 的图片上传验证

Image upload validation without using @Assert

我正在尝试强制上传图片。我已经在 @Assert\Valid 的集合类型上尝试过它,它在表单顶部生成错误 Image is missing!error bubbling 然后我通过设置 false 删除了 error bubbling。删除 error bubbling 后,我无法填充图像丢失错误。如何将错误映射到其表单元素,即 images.

请使用 Symfony 或 jQuery 帮助我解决此问题并提供可能的解决方案。并建议哪一个最好以及为什么。

实体:XYZBundle\Entity\Abc.php

     Class Abc
     {
         .....

         /**
         * @JMS\Groups({"details"})
         * @JMS\Expose
         *
         *@Assert\Valid
         * @var \Doctrine\Common\Collections\Collection
         */
        private $images;

        .....

表单类型:XYZBundle\Entity\AbcType.php

     public function buildForm(FormBuilderInterface $builder, array $options)
        {
           .....

            ->add('images', CollectionType::class, array(
                    'entry_type' => MediaType::class,
                    'label' => false,
                    'allow_add' => true,
                    'allow_delete' => true,
                    'by_reference' => false,
                    'prototype' => true,
                    'error_bubbling' => false,

                ))

           .....

通过将以下代码添加到 AbcController 我现在可以显示错误了。我现在已经从实体 (XYZBundle\Entity\Abc.php) 中删除了 @Assert\Valid

控制器:AbcController.php

 $images = $form['images']->getData();
            $imageExist=false;
            foreach ($images as $image){
                if(!empty($image->getFilename())){
                    $imageExist=true;
                    break;
                }
            }
            if(!$imageExist){
                $form['images']->addError(new FormError("Please upload at least one image."));
            }

唯一剩下的就是将错误映射到其表单元素之后。