我正在尝试设置并使用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
而且我不知道为什么,我检查到处寻找参考文献并没有发现任何结果。可以帮我解决这个问题或者给我一些线索吗?
答案 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。