2013-08-21 11 views
5

Symfony2.3 kullanıyorum. Böyle bir form var:Symfony2: Doktrini olmayan bir dosya nasıl yüklenir?

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

ve ben denetleyicisi bu kullandığınız bir directory.Then kullanıcı resimlerini yüklemek istiyorum:

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

İşe gerekir, ancak ben bu hatayı bkz:

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

Sorun nedir?!

cevap

5

Problem çözüldü! Ben uyeturu bu satırı değiştirin:

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

Buna:

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

Hatam ben "resim" alan olarak, Mongo Borcunu (veya Belgeye eşlenmedi açıklamak gerektiği ifade edildi benim projesi). Else Symfony çekirdeği, bir varlık alanında "pic" değerini koymaya çalışır. Ve bir dosya tutan herhangi bir alanım yok! Resmi bir dizine yükledim ve yalnızca varlıktaki resmin yolunu saklıyorum. Bunu değiştirdiğimde sorun kolayca çözüldü! :-) Her şeyi açıkça Symfony'ye açıklamayı aklınızdan çıkarmayın!