2013-03-03 1 views
1

아약스 호출로 파일을 업로드하려고하는데, 저장할 때 anagrafic과의 관계 만 저장합니다. 정상적으로 저장하려고하면 올바르게 작동합니다.Symfony2 Ajax 업로드

마치 개체를로드하지 않은 것입니다. UploadFile! 나는

public function fileCreateAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $entity = $em->getRepository('MyBusinessBundle:Anagrafic')->find($id); 
    $media = new Multimedia(); 
    $form = $this->createForm(new MultimediaType(), $media); 

    if ($this->getRequest()->isMethod('POST')) { 
     $form->bind($this->getRequest()); 
     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 

      $media->setAnagrafic($entity); 
      $em->persist($media); 
      $em->flush(); 

      $response = new Response(); 
     $output = array('success' => true); 
     $response->headers->set('Content-Type', 'application/json'); 
     $response->setContent(json_encode($output)); 
     } 
    } 

나는 위해서 var_dump의 위해서 var_dump ($ 미디어를) 할 ​​시도 내 컨트롤러에서 심포니 요리 책 http://symfony.com/doc/2.1/cookbook/doctrine/file_uploads.html 에 따라 테이블을 생성; 반환 :

object(My\BusinessBundle\Entity\Multimedia)[337] 
    private 'id' => null 
    private 'percorso' => null 
    private 'alt' => null 
    private 'type' => null 
    public 'file' => null 
    private 'anagrafic' => null 

답변

0

내가 왜 .. 을하지만 파일을 전달하는 JQuery와 https://github.com/blueimp/jQuery-File-Upload 플러그인-A를 사용하는 경우, 내가 요리 책의 방법을 계속 할 수있는 올바른 파일을 얻을 수 이해하지 않는다! 내 솔루션 :

public function fileCreateAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $entity = $em->getRepository('MyBusinessBundle:Anagrafic')->find($id); 
    $media = new Multimedia(); 
    $form = $this->createForm(new MultimediaType(), $media); 

    $request = $this->getRequest(); 
    if ($request->isMethod('POST')) { 
     $form->bind($request); 
     if ($form->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 
      $media->setAnagrafic($entity); 
      $em->persist($media); 
      $em->flush(); 

      if ($request->isXmlHttpRequest()) { 
       $response = new Response(); 
       $output = array('success' => true); 
       $response->headers->set('Content-Type', 'application/json'); 
       $response->setContent(json_encode($output)); 

       return $response; 
      } else { 
       return $this->redirect($this->generateUrl('user_img', array('id' => $entity->getId()))); 
      } 

    } else { 
    if ($request->isXmlHttpRequest()) { 
     $errors = $form->get('file')->getErrors(); 
     $response = new Response(); 
     $output = array('success' => false, 'errors' => $errors[0]->getMessage()); 
     $response->headers->set('Content-Type', 'application/json'); 
     $response->setContent(json_encode($output)); 

     return $response; 
    } 
    } 
    } 

이 될 것이다 이중 통화를 제공 리팩토링 -> isXmlHttpRequest()하지만, 개념의 작품! 나는 깜빡했다. 입력 파일을 "multiple"로 설정하면 각 파일에 대한 요청이 이루어진다!

해결!