3

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

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

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

MappingException:在链配置的命名空间 Sonata\MediaBundle\Entity 中找不到类 'Application\Sonata\UserBundle\Entity\User'

而且我不知道为什么,我到处寻找参考资料,但一无所获。任何人都可以帮助我解决这个问题或给我一个线索吗?

4

3 回答 3

3

在阅读并尝试了几件事后,我发现了错误所在。在我的学说配置中,我有:

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

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

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    auto_mapping: true
#    entity_managers:
#        default:
#            mappings:
#                ApplicationSonataMediaBundle: ~
#                SonataMediaBundle: ~
于 2014-02-12T14:15:08.103 回答
0

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

于 2014-02-12T13:40:59.717 回答
0

我找到了应该在的解决方案:

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

auto_mapping: true 必须进入教义,orm,entity_managers,默认部分,而不是进入教义,orm。

于 2015-08-04T08:09:27.743 回答