【问题标题】:Image upload validation without using @Assert不使用@Assert 的图像上传验证
【发布时间】:2016-09-01 12:25:35
【问题描述】:

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

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

实体:XYZBundle\Entity\Abc.php

     Class Abc
     {
         .....

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

        .....

FormType: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,

                ))

           .....

【问题讨论】:

    标签: php jquery symfony symfony-3.1


    【解决方案1】:

    通过将以下代码添加到 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."));
                }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2016-03-02
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多