"ApplicationSonataUserBundle"捆绑包不存在或未启用

15
我需要安装SonataUserBundle才能安装SonataNewsBundle。
我按照安装教程一步一步操作:installation Tutorial,但是出现了以下错误:
./app/console sonata:easy-extends:generate SonataUserBundle



  [InvalidArgumentException]                                                 
  Bundle "ApplicationSonataUserBundle" does not exist or it is not enabled.  

包尚未生成。该命令应该会生成它!

有没有人知道如何解决这个问题?

7个回答

31

编辑于2016/09/23:此答案可能有些过时。如果这个方法不起作用,您可以尝试下面的@ashish answer

在设置 Sonata User Bundle 时,建议将 doctrine:orm 映射到 ApplicationSonataUserBundle,而在 sonata:easy-extends:generate 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:~上的注释(#)

“ApplicationSonataUserBundle”捆绑包不存在或未启用错误已消失。

祝您拥有愉快的一天。


22
在运行 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) 执行sonata:easy-extends:generate命令 "php app/console sonata:easy-extends:generate SonataUserBundle -d src"

现在回滚步骤1、2和3。


谢谢!这是解决问题的真正方法,因为在你注释掉 # ApplicationSonataUserBundle: ~ 后,你会得到一个错误提示:“类 'Application\Sonata\UserBundle\Entity\User' 不存在”,composer 就无法继续生成这些类。将我的 config.yml 中的内容替换为你提供的内容后,问题得以解决,我成功生成了 bundle。 - Cowwando

2
我在config.yml中删除了对Application\Sonata\UserBundle\Entity\User和Application\Sonata\UserBundle\Entity\Group的引用,并在AppKernel.php中删除了'new Application\Sonata\UserBundle\ApplicationSonataUserBundle()'。然后运行easy extends generate命令,最后再添加这些引用。我认为文档的步骤有点混乱。在bundle不存在之前是不能在config.yml中引用它的。

2

你好,我遇到了同样的问题,但是我找到了解决方法。让我们看看我是怎么做的:

在命令行中:

php app/console sonata:easy-extends:generate -d src/ SonataUserBundle

然后在AppKernel文件中编写:

new Application\Sonata\UserBundle\ApplicationSonataUserBundle

现在这个正在工作 ;)
以及这个命令
sonata:easy-extends:generate SonataUserBundle

在“App/”文件中创建Bundle。

1
您的步骤是正确的,除了它已经在 "app/" 文件夹中创建了您的 ApplicationSonataAdminBundle,所以您应该剪切这个生成的 ApplicationSonataAdminBundle 并粘贴到 "src/" 文件夹中。

0

如果您不想使用 "easy-extends",另一个可能的解决方案是在 config.yml 中覆盖默认设置。

sonata_user:
    class:
        user: Acme\UserBundle\Entity\User
        group: Acme\UserBundle\Entity\Group

0

好的,该命令是步骤 5,您需要在运行此第五步之前完成前四步。

您遇到错误是因为您错过了第二步:安装捆绑包并配置框架(例如,AppKernel不知道捆绑包)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接