0

Sonata Admin Bundle と Sonata Media Bundle を使用しています。素晴らしいのですが、メディアの使用に関して問題があります。 https://sonata-project.org/bundles/media/2-2/doc/index.html

例 Post Document があります。Post には $image 変数があり、targetDocument は Media です。そして、新しい投稿を作成するときは、画像ファイルをアップロードする必要があり、投稿を保存する前に、まずアップロード画像ファイルを 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

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 に答える