2017-02-04 10 views
0

私はSymfonyには新しく、Symfony FormsとVichuploader-Bundleを使って複数のファイル(画像)をアップロードしようとしています。Symfony:複数のファイルをアップロードするにはどうすればいいですか?

私TestObjectTypeは、Imageオブジェクトのコレクションを保持する必要のある、次のようになります。

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('images', CollectionType::class, array(
      'entry_type' => new ImageFormType(), 
     )); 
} 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => TestObject::class 
    )); 
} 

ImageFormType:コントローラコードの

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('imageFile', VichImageType::class, array(
       'required' => false, 
      )); 
    } 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => Image::class 
     )); 
    } 

パート:私が得る

public function newAction(Request $request) 
     $form = $this->createForm(TestObjectType::class, $testObject); 
     $form->handleRequest($request); 

     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($testObject); 
      $em->flush(); 

      return $this->redirectToRoute("home"); 
     } 
} 

送信中に次のエラーが発生しました: Neither the property "imageFile" nor one of the methods "getImageFile()", "imageFile()", "isImageFile()", "hasImageFile()", "__get()" exist and have public access in class "TestBundle\Entity\TestObject".

私のTestObjectにはimageFileというプロパティはありませんが、私のImageオブジェクトはありません。ここには何が欠けていますか? ImageオブジェクトのimageFileプロパティが使用されないのはなぜですか?私はすでにHow to Upload FilesCollectionType Fieldを読んだことがありましたが、あまり役に立ちませんでした。

EDITは

たぶん私のエンティティのスニペットは役に立つかもしれません:

TestObject

/** 
* @ORM\OneToMany(targetEntity="TestBundle\Entity\Image", mappedBy="testObject") 
*/ 
private $images; 

画像

/** 
    * NOTE: This is not a mapped field of entity metadata, just a simple property. 
    * 
    * @Vich\UploadableField(mapping="product_image", fileNameProperty="imageName") 
    * 
    * @var File|\Symfony\Component\HttpFoundation\File\UploadedFile $image 
    */ 
    private $imageFile; 

    /** 
    * @ORM\Column(type="string", length=255) 
    * 
    * @var string 
    */ 
    private $imageName; 


    /** 
    * @ORM\ManyToOne(targetEntity="TestBundle\Entity\TestObject", inversedBy="images") 
    * @ORM\JoinColumn(name="test_object_id", referencedColumnName="id") 
    */ 
    private $testObject; 
+0

ImageエンティティのimageFileおよびimageNameプロパティにgetterおよびsetterが定義されていますか? –

+0

はい、すべてのプロパティにはゲッターとセッターが定義されています。 – baris1892

答えて

0

私は解決策を見つけたと思う:symfony`をします私のキャッシュは私を怒らせる!簡単です

php app/console cache:clear 

でした!アー、時間がかかったよ!

関連する問題