2016-03-17 7 views
0

У меня есть пакет администрирования Sonata и пакет соната для сонат. Это здорово, но у меня проблема с использованием Media. https://sonata-project.org/bundles/media/2-2/doc/index.htmlSymfony 2 Sonata Media bundle: сохранение медиафайла без изображения соната admin

Пример У меня есть почтовый документ, в столбце у меня есть переменная $ image с targetDocument - это Media. И когда я создаю новую почту, я должен загрузить файл изображения, а перед сохранением сообщения я должен сначала сохранить файл загружаемого изображения в Media Entity, а затем указать, что $ image Post для медиа-объекта только что был сохранен.

Сообщение Документ:

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

Можем ли мы каким-либо образом, чтобы получить доступ к медиа Entity и сохранить файл для загрузки на него в функции Post Document. Я прочитал это, но это больше не помогает.

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

ответ

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; 
+0

Я получил ' 'Undefined variable: mediaManager'', даже если я использую' 'использование Sonata \ MediaBundle \ Entity \ MediaManager;' '. Как я могу получить доступ к $ mediaManager? – lomboboo

+2

'$ mediaManager = $ this-> container-> get ('sonata.media.manager.media');' –

+0

, можете ли вы сообщить мне о uploadImage, я готов создать api, который хранит изображения в медиа-комплекте –