2013-08-21 27 views
5

Tôi sử dụng Symfony2.3. Tôi có một hình thức như thế này:Symfony2: Cách tải lên tệp không có Doctrine?

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

và tôi muốn tải lên hình ảnh người dùng trong một directory.Then tôi sử dụng này trong điều khiển:

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

Nó phải làm việc, nhưng tôi thấy lỗi này:

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

Sự cố là gì ??!

Trả lời

5

Sự cố được giải quyết! Tôi thay đổi dòng này trong membertype:

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

này:

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

sai lầm của tôi là tôi phải giải thích "pic" lĩnh vực không được ánh xạ tới các Entity (hoặc tài liệu ở Mông Cổ, như tôi dự án). Khác hạt nhân Symfony cố gắng đặt giá trị của "pic" trong một lĩnh vực thực thể. Và tôi không có bất kỳ lĩnh vực nào giữ một tập tin! Tôi tải ảnh lên trong một thư mục và chỉ lưu trữ đường dẫn đến ảnh trong thực thể. Khi tôi thay đổi điều này, vấn đề được giải quyết dễ dàng! :-) Vì vậy, hãy nhớ giải thích mọi thứ rõ ràng với Symfony!

Các vấn đề liên quan