SonataMediaBundle用于自定义实体

时间:2013-06-17 11:19:10

标签: php symfony doctrine-orm sonata-admin

我正在使用Symfony2和Sonata捆绑包(Sonata-Admin和Sonata-Media)来开发我的CMS项目。

我为自定义捆绑包设置了我的管理类,但它运行良好。我需要将图像附加到我的实体中并在用户页面中查看它们。但是我在自定义实体中使用SonataMediaBundle时遇到问题。我正在尝试向我的实体类的AdminController添加一个字段,并在我的实体定义中创建一个manyToOne关系。

我从来没有得到它的工作,一般给“实体未被发现”异常(Doctrine \ ORM \ EntityNotFoundException类)

我找不到除SonataMedia Documentation以外的文章,但无法解决此问题。有人知道一篇好文章来阅读和理解SonataMedia Bundle的整个概念吗?

有关我的代码的更多信息如下:

MyEntity.orm.yml

PRJ\Bundle\PRJBundle\Entity\MyEntity:
type: entity
table: my_table
fields:
    id:
        id: true
        type: integer
        unsigned: false
        nullable: false
        generator:
            strategy: IDENTITY

# Other fields eliminated

manyToOne:
    picture:
        targetEntity: Application\Sonata\MediaBundle\Entity\Media
        joinColumns:
                name: Picture_id
                referencedColumnName: id
        orphanRemoval: false
lifecycleCallbacks: {  }

实际上,此代码适用于管理员面板和用户页面,但是当管理员用户正在编辑记录或输入新记录时,我无法使其在管理页面上运行。

如果我错了,请纠正我,我假设我可以为附加图片的自定义实体生成管理类。我将添加一个字段并将其定义为我数据库中media__media表的外键,并在我的实体上创建必要的定义。最后,我将能够在创建新实体时通过SonataMediaBundle上传新图片。管理员用户将输入实体详细信息并按下上传按钮并选择图片,上传按钮与SonataMedia捆绑包一起使用并将图像上传到SonataMedia捆绑包表中,新记录也将在我的捆绑包表中创建并与新创建的媒体相关联。

我希望我能很好地描述我的问题并感谢你。

1 个答案:

答案 0 :(得分:0)

如果您在SonataMediaBundle中使用自定义实体类,则需要在config.yml中指定它们:

sonata_media:
    class: 
        media: MyVendor\MediaBundle\Entity\Media
        gallery: MyVendor\MediaBundle\Entity\Gallery
        gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia