5

我使用 Symfony2.3。我有这样的表格:

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

我想在目录中上传用户图片。然后我在控制器中使用它:

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

它必须工作,但我看到这个错误:

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

有什么问题??!

4

1 回答 1

5

问题解决了!我在 MemberType 中更改了这一行:

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

对此:

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

我的错误是我必须解释“pic”字段未映射到实体(或 Mongo 中的文档,作为我的项目)。否则 Symfony 内核会尝试将“pic”的值放在 Entity 的字段中。而且我没有任何保存文件的字段!我将图片上传到目录中,并仅在实体中存储图片的路径。当我改变这个时,问题很容易解决!:-) 所以请记住向 Symfony 清楚地解释所有事情!

于 2013-08-21T19:26:54.900 回答