2016-09-01 51 views
0

我正在嘗試將圖片上傳強制執行。我已經@Assert\Valid其上的形式,即誤差鼓泡的頂部產生誤差Image is missing!試圖在一個收集類型然後我通過設置它false除去error bubbling。刪除後錯誤冒泡我無法填充圖像缺失錯誤。如何將錯誤映射到它的表單元素,即images未使用@Assert進行圖片上傳驗證

請幫忙&通過使用Symfony或jQuery爲這個問題提供了可能的解決方案。爲什麼還建議哪一個是最好的&。

實體:XYZBundle \實體\ Abc.php

 Class Abc 
    { 
     ..... 

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

     ..... 

FormType:XYZBundle \實體\ 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, 

       )) 

      ..... 

回答

0

通過添加以下代碼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.")); 
      } 

所剩下的唯一的事情就是它的表單元素後的誤差圖。