安装SonataMediaBundle后映射异常

时间:2014-02-12 13:13:55

标签: php symfony sonata-admin symfony-sonata sonata-media-bundle

我正在尝试设置并使用SonataMediaBundle在SonataAdminBundle中使用。我阅读并遵循docs for SMB中的每一步。当我运行命令时:

php app/console sonata:easy-extends:generate SonataMediaBundle

默认情况下,这会在app/文件夹中创建Bundle,因此我会手动移动到src/文件夹中。现在,每当我尝试访问我的应用程序时,都会收到此错误:

  

MappingException:该类   链中找不到“Application \ Sonata \ UserBundle \ Entity \ User”   配置的名称空间Sonata \ MediaBundle \ Entity

而且我不知道为什么,我检查到处寻找参考文献并没有发现任何结果。可以帮我解决这个问题或者给我一些线索吗?

3 个答案:

答案 0 :(得分:3)

读完并尝试了几件我发现错误的地方。在我的学说配置中,我有:

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
#   auto_mapping: true
    entity_managers:
        default:
            mappings:
                ApplicationSonataMediaBundle: ~
                SonataMediaBundle: ~

通过删除auto_mapping子句,我不再在doctrine的映射目录中注册UserBundle。因此,它无法找到您的用户实体。因此,解决方案是从配置中取消注释auto_mapping: true并注释entity_manager.default.mappings部分,或者在部分中明确指定您的用户包。所以我选择第一个,我的代码现在看起来像这样:

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    auto_mapping: true
#    entity_managers:
#        default:
#            mappings:
#                ApplicationSonataMediaBundle: ~
#                SonataMediaBundle: ~

答案 1 :(得分:0)

再次删除它并运行以下命令,php app/console sonata:easy-extends:generate --dest=src SonataMediaBundle ...您忘记了--dest=src,只需移动文件就不会更改所有名称空间。

答案 2 :(得分:0)

我找到了解决方案:

doctrine:
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        entity_managers:
            default:
                auto_mapping: true
                mappings:
                    ApplicationSonataMediaBundle: ~
                    SonataMediaBundle: ~

auto_mapping:true必须是doctrine,orm,entity_managers,默认部分而不是doctrine,orm。