2016-09-01 4 views
0

私は強制的に画像をアップロードしようとしています。私は、私はfalseそれを設定することにより、error bubblingを除去バブリング形すなわちエラーの上にエラーImage is missing!を生成し@Assert\Validによってコレクション型にそれを試してみました。削除後エラーバブリングイメージが見つかりませんエラーを報告できません。エラーをそのフォーム要素、つまり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に次のコードを追加することでI今エラーを表示することができます。そして、私はエンティティ(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.")); 
      } 

残っている唯一のものは、ちょうどそのフォーム要素の後にエラーをマッピングすることです。

関連する問題