Symfony 无法注册捆绑包
Posted
技术标签:
【中文标题】Symfony 无法注册捆绑包【英文标题】:Symfony is not able to register a bundle 【发布时间】:2018-10-26 06:00:55 【问题描述】:我在symproject/src/MyAppBundle/src/Bundle
有一个捆绑包
此文件夹包含MyAppBundle.php
:
<?php
namespace MyCompany\Action\Provider\MyAppBundle\Bundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class MyAppBundle extends Bundle
然后我在App/Appkernel.php
注册:
public function registerBundles()
$bundles = [
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 Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
new MyCompany\Action\Provider\MyAppBundle\Bundle\MyAppbundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true))
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
if ('dev' === $this->getEnvironment())
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
return $bundles;
执行此操作后,该网站将根本无法运行。日志说:
PHP 致命错误:未捕获的错误:类 'MyCompany\Action\Provider\MyAppProvider\Bundle\MyAppBundle' 不是 在 /var/www/html/symproject/app/AppKernel.php:20\nStack 中找到 跟踪:\n#0 /var/www/html/symproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(494): AppKernel->registerBundles()\n#1 /var/www/html/symproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(134): Symfony\Component\HttpKernel\Kernel->initializeBundles()\n#2 /var/www/html/symproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php(197): Symfony\Component\HttpKernel\Kernel->boot()\n#3 /var/www/html/symproject/web/app.php(19): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))\n#4 main\n 在线抛出 /var/www/html/symproject/app/AppKernel.php 20
【问题讨论】:
好像找不到那个捆绑包MyCompany\ACtion\Provider\MyAppProvider\Bundle\MyAppBundle
,你已经上课了吗?您是否为捆绑包配置了自动加载?
也许是因为 C 是 ACtion 中的大写字母,而在其他地方它很小
您的路径/命名空间有问题。 symproject/src/MyAppBundle/src/Bundle/MyAppBundle.php
应该是 symproject/src/MyAppBundle/MyAppBundle.php
然后调整你的命名空间。或者你必须在你的作曲家中定义一个 psr-4。我认为你搞砸了。
大写的 C 是为了堆栈溢出而重写的错字。
【参考方案1】:
您已将捆绑类放置到
symproject/src/MyAppBundle/src/Bundle
文件夹,但命名空间是
MyCompany\Action\Provider\MyAppBundle\Bundle
应该是命名空间
App\MyAppBundle\Bundle
并移至文件夹
symproject/src/MyAppBundle/Bundle
或者您应该更改 composer.json 文件的自动加载部分以使用不同的类加载。
https://getcomposer.org/doc/01-basic-usage.md#autoloading
【讨论】:
以上是关于Symfony 无法注册捆绑包的主要内容,如果未能解决你的问题,请参考以下文章