1

我正在尝试使用 ajax 调用上传文件,但是当我去保存时,我只保存了与 anagrafic 的关系。我声明,如果我尝试保存正常工作。

就好像它没有加载对象 UploadFile!我根据 symfony 食谱http://symfony.com/doc/2.1/cookbook/doctrine/file_uploads.html 在我的控制器中创建了表格

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($media); 并返回:

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

1 回答 1

0

我不明白为什么.. 但是如果我使用插件 jquery https://github.com/blueimp/jQuery-File-Upload来传递文件,我会得到正确的文件,我可以继续使用烹饪书!我的解决方案:

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() 将是重构,但这个概念有效!我忘了..如果您将输入文件设置为“多个”,则会为每个文件发出请求!

解决了!

于 2013-03-04T15:16:39.417 回答