0

画像のアップロードを義務化しようとしています。フォームの上部に@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;

        .....

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,

                ))

           .....
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 に答える