0

我使用的是 Sonata Admin Bundle 和 Sonata Media Bundle。很棒,但是我在使用 Media 时遇到了问题。 https://sonata-project.org/bundles/media/2-2/doc/index.html

示例我有一个发布文档,在发布中我有 $image 变量,targetDocument 是媒体。而当我创建新的帖子时,我必须上传图片文件,在保存帖子之前,我必须先将上传的图片文件保存到媒体实体,然后我将帖子的$image指向刚刚保存的媒体实体。

邮寄文件:

<?php
namespace Acme\Bundle\PostBundle\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @MongoDB\Document(repositoryClass="Acme\Bundle\PostBundle\Repository\PostRepository")
 */
class Post
{
    /**
     * @MongoDB\Id
     */
    protected $id;

    /**
     * @MongoDB\String
     */
    protected $name;

    /**
     * @MongoDB\ReferenceOne(targetDocument="Application\Sonata\MediaBundle\Document\Media", nullable=true )
     */
    protected $image;

我们是否可以通过任何方式访问媒体实体并将上传文件保存到发布文档功能中。我读过这个,但它没有更多帮助。

https://sonata-project.org/bundles/media/master/doc/reference/form.html

4

1 回答 1

2

答案在这里:

在上面的代码中,我们必须先将上传的图片保存到媒体,然后将其指向帖子:

    $mediaManager = $this->container->get('sonata.media.manager.media');
    $media = new Media();
    $media->setBinaryContent($uploadImage);
    $media->setContext('default');
    $media->setProviderName('sonata.media.provider.image');
    $mediaManager->save($media);
    $post->setImage($media);
    print_r($media);exit;
于 2016-03-21T03:09:02.897 回答