Symfony2捆绑没有注册

时间:2011-06-08 19:22:20

标签: symfony registry bundle

我用app / console创建了一个新的包。试图打印一个简单的问候,所以我可以继续前进。我自动加载了命名空间,注册了bundle,创建了一个页面,但Symfony检测到异常:

Bundle "PageBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your AppKernel.php file?

但我已经做到了。

日志显示:

[2011-06-08 23:41:56] request.CRITICAL: InvalidArgumentException: Bundle "PageBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your AppKernel.php file? (uncaught exception) at /Applications/MAMP/htdocs/Symfony/app/bootstrap.php.cache line 634 

我还清除了缓存的dev文件夹。任何人都可以帮我弄清楚什么是错的。我以前做过这个,这是我第一次遇到这个问题。与bootstrap.php.cache有关的事情

谢谢!感谢所有帮助。

CODE:

public function registerBundles()
{
    $bundles = array(
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        new Symfony\Bundle\SecurityBundle\SecurityBundle(),
        new Symfony\Bundle\TwigBundle\TwigBundle(),
        new Symfony\Bundle\MonologBundle\MonologBundle(),
        new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
        new Symfony\Bundle\DoctrineBundle\DoctrineBundle(),
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
    );

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new Webmuch\PageBundle\WebmuchPageBundle();
        $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
        $bundles[] = new Symfony\Bundle\WebConfiguratorBundle\SymfonyWebConfiguratorBundle();
    }

    return $bundles;
}

该分发包也在分析器中显示为活动分发包。

2 个答案:

答案 0 :(得分:5)

它看起来不像引导缓存的问题(第634行指向Kernel::getBundles()方法,这是抛出异常的原因),但为了以防万一,有一个脚本可以重建它:{ {1}}。缓存的存在是为了减少Symfony加载核心Symfony类所需的bin\build_bootstrap.php个数,只要你使用其中一个beta,就不太可能出现任何错误。

听起来这可能是一个命名问题:你的错误抱怨缺少PageBundle,但根据你的内核,bundle应该被称为WebmuchPageBundle。您是否在require()中正确引用了它?路由配置示例如下:

routing_dev.yml

因为你只为dev& amp;定义了那个包。在测试环境中,您应该使用page: resource: "@WebmuchPageBundle/Controller/DefaultController.php" type: annotation 而不是routing_dev.yml

接下来,检查bundle类是否正确命名。您应该在捆绑包的根目录中有一个文件(例如routing.yml),其中包含以下内容:

src/Webmuch/PageBundle/WebmuchPageBundle.php

哦,显然检查Web服务器的用户是否可以读取您的bundle目录。我认为会引发不同的错误,但值得检查!

答案 1 :(得分:3)

之前我有这个错误。检查你的路线! 可能某个地方有这样的行:

webmuch_page_hello_world:
    pattern:   /hello
    defaults: { _controller: PageBundle:Default:hello }

有“PageBundle”不对。你应该使用“WebmuchPageBundle”。所以像这样使用它: WebmuchPageBundle :默认:你好