2013-08-21 17 views
5

Używam Symfony2.3. Mam formularz takiego:Symfony2: Jak załadować plik bez Doctrine?

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

i chcę przesłać zdjęcia użytkownika w directory.Then Używam tego kontrolera:

$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")); 
    } 

To musi działać, ale widzę ten błąd:

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(..... 

Na czym polega problem?

Odpowiedz

5

Problem rozwiązany! I zmienić tę linię typ członkostwa:

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

do tego:

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

Moim błędem było to, że muszę wyjaśnić „pic” pole nie jest mapowany do jednostki (lub dokument w Mongo, jak mój projekt). Inne jądro Symfony próbuje umieścić wartość "pic" w polu Entity. I nie mam żadnego pola, które trzyma plik! Przesyłam obraz do katalogu i przechowuję tylko ścieżkę do obrazu wewnątrz obiektu. Kiedy to zmieniłem, problem rozwiązany łatwo! :-) Pamiętaj o szczegółowym wyjaśnieniu Symfony!

Powiązane problemy