捆绑“ApplicationSonataUserBundle”不存在或未启用
Posted
技术标签:
【中文标题】捆绑“ApplicationSonataUserBundle”不存在或未启用【英文标题】:Bundle "ApplicationSonataUserBundle" does not exist or it is not enabled 【发布时间】:2012-08-31 16:38:22 【问题描述】:我需要安装 SonataUserBundle 才能安装 SonataNewsBundle。
我一步一步跟着installation Tutorial,但我得到了这个错误:
./app/console sonata:easy-extends:generate SonataUserBundle
[InvalidArgumentException]
Bundle "ApplicationSonataUserBundle" does not exist or it is not enabled.
尚未生成捆绑包。这个命令应该做到!
有人知道如何解决这个问题吗?
【问题讨论】:
【参考方案1】:嗯,该命令是第 5 步,您需要先执行前 4 步,然后才能运行第 5 步。
你得到的错误是因为你错过了第 2 步:安装包和配置框架(例如 AppKernel
不知道包)
【讨论】:
【参考方案2】:我通过从 config.yml 和 AppKernel 中删除对 Application\Sonata\UserBundle\Entity\User 和 Application\Sonata\UserBundle\Entity\Group 的引用和“new Application\Sonata\UserBundle\ApplicationSonataUserBundle()”来安装它.php。
然后运行 easy extends generate 命令,然后将引用放入。我认为文档将这些步骤搞混了。在 config.yml 中的包存在之前,您不能引用它。
【讨论】:
【参考方案3】:编辑 2016/09/23 :这个答案可能有点过时了。如果这不起作用,您可以在下面探索@ashish answer。
在 Sonata User Bundle 设置期间,建议您将 doctrine:orm 映射到 ApplicationSonataUserBundle,而在 sonata:easy-extends 期间无法做到这一点:生成 SonataUserBundle,因为 ApplicationSonataUserBundle 还不存在。
所以在启动 sonata:easy-extends:generate SonataUserBundle 命令之前,您可以评论 ApplicationSonataUserBundle 行:
# app/config/config.yml
[...]
# Doctrine Configuration
doctrine:
[...]
orm:
auto_generate_proxy_classes: %kernel.debug%
entity_managers:
default:
mappings:
# ApplicationSonataUserBundle: ~
SonataUserBundle: ~
然后你启动 sonata:easy-extends:generate SonataUserBundle 命令, 最后,删除 ***ApplicationSonataUserBundle 上的 cmets(#):~ **
Bundle“ApplicationSonataUserBundle”不存在或未启用错误消失了。
祝你有美好的一天。
【讨论】:
【参考方案4】:您好,我也遇到了同样的问题。但是我可以解决这个问题。让我们看看我在做什么:
在命令中:
php app/console sonata:easy-extends:generate -d src/ SonataUserBundle
然后写入AppKernel文件:
new Application\Sonata\UserBundle\ApplicationSonataUserBundle
现在这正在工作;)
还有这个命令
sonata:easy-extends:generate SonataUserBundle
在“App/”文件中创建 Bundle。
【讨论】:
【参考方案5】:在运行 sonata:easy-extends:generate 之前执行以下步骤
(1) 注释 config.yaml 中的 ApplicationSonataUserBundle 行
mappings:
# ApplicationSonataUserBundle: ~
SonataUserBundle: ~
(2) 将 Application\Sonata\UserBundle\Entity\User 替换为 Sonata\UserBundle\Entity\BaseUser
(3) 将 Application\Sonata\UserBundle\Entity\Group 替换为 Sonata\UserBundle\Entity\BaseGroup
(4) 运行奏鸣曲:easy-extends:generate "php app/console sonata:easy-extends:generate SonataUserBundle -d src"
现在还原步骤 1、2 和 3
【讨论】:
谢谢!这是该问题的真正解决方案,因为在您评论 #ApplicationSonataUserBundle: ~ 您将收到一条错误消息“Class 'Application\Sonata\UserBundle\Entity\User' 不存在”并且作曲家无法继续生成这些类。将 config.yml 中的我的替换为您所说的修复它,我能够生成捆绑包。【参考方案6】:你的步骤是对的,除了它在“app/”文件夹中创建了你的ApplicationSonataAdminBundle,所以你应该剪切这个生成的ApplicationSonataAdminBundle并粘贴到“src/”文件夹中..
【讨论】:
【参考方案7】:如果您不想使用“easy-extends”——另一种可能的解决方案是覆盖 config.yml
中的默认设置sonata_user:
class:
user: Acme\UserBundle\Entity\User
group: Acme\UserBundle\Entity\Group
【讨论】:
以上是关于捆绑“ApplicationSonataUserBundle”不存在或未启用的主要内容,如果未能解决你的问题,请参考以下文章