Sonata媒体bundle缺少实体类别



我尝试按照本指南将Sonata Media Bundle安装到Symfony CMF中:https://sonata-project.org/bundles/media/3-x/doc/reference/installation.html.此命令

php app/console sonata:easy-extends:generate --dest=src SonataMediaBundle

生成一个具有几个实体的全新捆绑ApplicationSonataMediaBundle

  • 画廊
  • GalleryHasMedia
  • 媒体

但当我想进入下一步时,我得到了实体类别不存在的错误:

app/console doctrine:schema:update --force

这是一个完整的错误:

[DoctrineORMMappingMappingException]                                                                                                  
  The target-entity ApplicationSonataClassificationBundleEntityCategory cannot be found in 'ApplicationSonataMediaBundleEntityMed  
  ia#category'.

有人能帮我解决这个问题吗?

提前谢谢。

更新:

# sonata_classification.yml:
sonata_classification:
    # ...
doctrine:
    orm:
        entity_managers:
            default:
                #metadata_cache_driver: apc
                #query_cache_driver: apc
                #result_cache_driver: apc
                mappings:
                    #ApplicationSonataClassificationBundle: ~
                    SonataClassificationBundle: ~

我必须设置这个配置选项才能让它工作:

sonata_media:
    class:
        media: ApplicationMediaBundleEntityMedia
        gallery: ApplicationMediaBundleEntityGallery
        gallery_has_media: ApplicationMediaBundleEntityGalleryHasMedia
    # ...

还有:

doctrine_phpcr:
    # ...
    odm:
        auto_mapping: true
        mappings:
            SonataMediaBundle:
                prefix: SonataMediaBundlePHPCR
            ApplicationSonataMediaBundle:
                prefix: ApplicationSonataMediaBundlePHPCR

我在安装新闻捆绑包后遇到了同样的问题(它带来了分类和媒体捆绑包)。我在新闻发布前配置了媒体和分类,收到了与OP相同的错误。在查看代码后,我注意到媒体捆绑包允许为类别指定另一个类。这为我停止了错误。

sonata_media:
    class:
        # my own bundle namespaces for media and classification bundles
        media: ApplicationSonataMediaBundleEntityMedia
        gallery: ApplicationSonataMediaBundleEntityGallery
        gallery_has_media: ApplicationSonataMediaBundleEntityGalleryHasMedia
        category: ApplicationSonataClassificationBundleEntityCategory

看起来您只需要创建一个sona_classification.yml文件,如分类文档

中所述

我解决了这个问题,所以:

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new ApplicationSonataClassificationBundleApplicationSonataClassificationBundle(),
        // ...
    );
}

php bin/console doctrine:schema:update --force

最新更新