安装 SonataMediaBundle 后映射异常

Posted

技术标签:

【中文标题】安装 SonataMediaBundle 后映射异常【英文标题】:Mapping exception after install SonataMediaBundle 【发布时间】:2014-03-10 20:10:36 【问题描述】:

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

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

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

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

我不知道为什么,我到处寻找参考资料,但一无所获。有谁能帮我解决这个问题或给我一个线索?

【问题讨论】:

【参考方案1】:

我找到了应有的解决方案:

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

auto_mapping: true 必须是进到学说、orm、entity_managers、默认部分而不是进到学说、orm。

【讨论】:

【参考方案2】:

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

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: ~

【讨论】:

【参考方案3】:

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

【讨论】:

我在运行命令后按照您的建议生成了捆绑包:#php app/console doctrine:schema:update --force Updating database schema... Database schema updated successfully! "5" queries were executed 通过删除 app/cache/ 文件夹中的所有内容来清除缓存,但错误仍然存​​在:MappingException: The class 'Application\Sonata\UserBundle\Entity\User' was not found in the chain configured namespaces Application\Sonata\MediaBundle\Entity, Sonata\MediaBundle\Entity 我不知道是什么原因这个,还有什么想法吗? 你能用你的composer.json更新你的问题吗?你真的按照安装instructions,因为schema:updatecommand是最后的步骤之一......

以上是关于安装 SonataMediaBundle 后映射异常的主要内容,如果未能解决你的问题,请参考以下文章

无效的映射文件 BaseMedia.mongodb.xml

SonataMediaBundle - 如何上传图片?

SonataMediaBundle : 允许用户上传链接

如何从SonataMediaBundle的图库中获取图像网址,以便与FOSRestBundle一起使用?

LeetCode﹝前缀树ி﹞最长单词键值映射最大异或值

SonataMediaBundle:找不到文件/图像