2013-08-21 11 views
5

私はSymfony2.3を使用しています。私はこのような形式があります:Symfony2:Doctrineなしでファイルをアップロードするには?

<form action="{{ path("member_update") }}" method="post" {{ form_enctype(form) }}> 
    {{ form_widget(form.pic) }} 
    ... 
    {{ form_widget(form._token) }} 
</form> 

をし、私は、コントローラでこれを使用directory.Thenにユーザーの写真をアップロードする:それは働かなければならない

$member , $form , $dm is defined... 

if ($form->isValid()) { 
     // Handle profile picture upload process 
     $uploadDir=dirname($this->container->getParameter('kernel.root_dir')) . '/web/bundles/mybundle/myfiles'; 
     $form['pic']->getData()->move($uploadDir,$member->getId()); 
     // End of upload 

     $dm->persist($member); 
     $dm->flush(); 
     return $this->redirect($this->generateUrl("member_profile")); 
    } 

が、私はこのエラーを参照してください。

Exception: Serialization of 'Symfony\Component\HttpFoundation\File\UploadedFile' is not allowed 

1. in pathToMyProject...\vendor\symfony\symfony\src\Symfony\Component\HttpKernel\DataCollector\DataCollector.php line 27 
2. at serialize(..... 

何が問題なのですか。

答えて

5

問題が解決しました!私はのmemberTypeにこの行を変更します。これに

$builder->add('pic','file'); 

$builder->add('pic','file', array('mapped'=>false)); 

私のミスは私のよう私が説明し、「PIC」フィールドは、モンゴでエンティティ(またはドキュメントにマップされていないしなければならないということでしたプロジェクト)。それ以外の場合、Symfonyカーネルは、 "pic"の値をEntityのフィールドに入れようとします。私はファイルを保持するフィールドがありません!ピクチャをディレクトリにアップロードし、エンティティ内のピクチャへのパスのみを保存します。私がこれを変更したとき、問題は簡単に解決されました! :-) Symfonyにすべてのことを明確に説明することを忘れないでください!

関連する問題