我用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;
}
该分发包也在分析器中显示为活动分发包。
答案 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 :默认:你好