2017-11-19 5 views
0

私はsymfonyの3で複数のファイルアップロードでフォームを作成したいのですが、それは働いていない、私は私のコントローラにエラーがあります。フォーム3

タイプの

期待値「ドクトリン"SGBundle \ Entity \ Album#$ images"という関連フィールドの\ Common \ Collections \ Collection |配列には、代わりに "Symfony \ Component \ HttpFoundation \ File \ UploadedFile"があります。

私は2つのエンティティ:Album.phpとOneToMany関係のImage.php(アルバムには複数の画像があります)があります。

私のイメージは正常に自分のフォルダにアップロードされましたが、データベースに挿入できません。

ここに私のコントローラで自分のコードの最も重要な部分は、次のとおりです。

$images = $album->getImages(); 

     foreach ($images as $image) { 

      $fileName = md5(uniqid('img_album_', true)); 
      $fileExtension = $image->guessExtension(); 
      $nomImageComplet = $fileName . '.' . $fileExtension; 

      $image->move(
       $this->getParameter('albums_images_directory'), 
       $nomImageComplet 
      ); 

      $tinified = fromFile($this->getParameter('albums_images_directory') . '/' . $nomImageComplet); 
      $tinified->toFile($this->getParameter('albums_images_directory') . '/' . $nomImageComplet); 

      $img = new Image(); 
      $img->setExtension($fileExtension); 
      $img->setFile($fileName); 

      $em->persist($img); 
      $em->flush(); 
     } 

私にformType:

/** 
* Class AlbumType 
* 
* @package SGBundle\Form 
*/ 
class AlbumType extends AbstractType 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder-> 
     add('titre', TextType::class, [ 
         'attr' => [ 
          'placeholder' => 'Titre de l\'album (140 caractères max) *', 
         ], 
        ]) 
     ->add('miniature', FileType::class, [ 
         'attr' => [ 
          'placeholder' => 'Miniature de l\'album *', 
         ], 'required' => false, 'data_class' => null, 
        ]) 
     ->add('images', FileType::class, [ 
      'attr' => [ 
       'placeholder' => 'Images de l\'album *', 
       'accept' => 'image/*', 
       'multiple' => 'multiple' 
      ], 'required' => false, 'data_class' => null, 'multiple' => true, 
     ]) 
     ->add('envoyer', SubmitType::class) 
     ->add('annuler', ResetType::class); 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(
      [ 
       'data_class' => Album::class, 
      ] 
     ); 
    } 

はあなたの助けのために事前にありがとうござい

+0

ようにする必要があり、あなたのフォームタイプ – kamwoz

+0

は、私はあなたがフォームからファイルを受け取っ –

+0

私のポストを編集しますが、関係はイメージです私たちを見ます。 VichuploadBundleを使用してファイルをアップロードします。 – zalex

答えて

0

あなたimages属性がなければなりませんこのようなもの

->add('images', CollecionType::class, [ 
'entry_type' => ImageType::class, 
'allow_add' => true, 
'allow_delete' => true 

])

そしてあなたIMAGETYPE ::クラスは、この

->add('image', FileType::class, [ 
'attr' => [ 
    'placeholder' => 'Images de l\'album *', 
    'accept' => 'image/*', 
    'multiple' => 'multiple 
], 'required' => false, 'data_class' => null, 'multiple' => true,]) 
関連する問題