0

我正在尝试强制上传图片。我已经在 Collection Type 上尝试过,它在表单顶部@Assert\Valid生成错误,即错误冒泡,然后我通过设置将其删除。消除错误冒泡后,我无法填充图像丢失错误。如何将错误映射到其表单元素,即.Image is missing!error bubblingfalseimages

请通过使用 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,

                ))

           .....
4

1 回答 1

0

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

控制器: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."));
            }

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

于 2016-09-06T04:17:29.377 回答