首页 文章

Symfony 2 Sonata Media捆绑:保存媒体文件图像,不带奏鸣曲管理员

提问于
浏览
0

我使用了Sonata Admin Bundle和Sonata Media Bundle . 这很棒,但我有使用Media的问题 . https://sonata-project.org/bundles/media/2-2/doc/index.html

示例我有一个Post Document,在Post中我有$ image变量,targetDocument是Media . 当我创建新帖子时,我必须上传图像文件,在保存Post之前,我必须首先将上传图像文件保存到Media Entity,然后我将Post的$ image指向刚刚保存的Media Entity .

邮寄文件:

<?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;

我们是否可以通过任何方式访问媒体实体并在Post Document功能中将上传文件保存到其中 . 我读过这个,但没有多大帮助 .

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

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;
    

相关问题