尝试从命名空间"TwigExtraTwigExtraBundle"加载类"TwigExtraBundle"



我在Symfony项目的composer.json文件中有以下内容:

...
"twig/extra-bundle": "^3.3",
...

…和以下在我的bundles.php文件:

...
TwigExtraTwigExtraBundleTwigExtraBundle::class => ['all' => true],
...

…当我运行composer install时,一切似乎都安装正确。

然而,每当我加载一个页面时,我就会得到这个错误:

ClassNotFoundException试图加载类" twigextrbundle& quot;从名称空间"额外树枝 TwigExtraBundle"。你是不是忘了一个"用法"?另一个名称空间的语句?在Kernel.php第23行Kernel->registerBundles()在Kernel.php第446行Kernel->boot()中的Kernel.php第133行initializeBundles()在Kernel->handle(object(SiteRequest))中的index.php第32行

我错过了哪一步?

= = = =

编辑:到目前为止,我发现了以下内容:

  • 当运行composer require twig/extra-bundle时,编者说composer.lock没有什么要改变的

  • 如果我删除vendor文件夹并做composer install,正确的类似乎出现在供应商文件夹中,尽管Symfony页面仍然找不到它们。

  • 事实上,我甚至可以在PHPStorm中使用ctrl-b跳转到供应商文件夹中的类。

在您使用TwigExtraBundle(您没有显示)的代码中,您可能会意外地出现类似

的内容
use TwigExtraTwigExtraBundle;
...
$foo = new TwigExtraBundleTwigExtraBundle();

注意重复。如果我故意像那样在类中放入代码,就会产生您现在看到的错误。

Attempted to load class “TwigExtraBundle” from namespace “TwigExtraTwigExtraBundle”

显然,解决方案是删除重复:

$foo = new TwigExtraBundle();

我想结束这个问题。

类在供应商文件夹删除和新的composer install之后仍然没有出现的原因是我们正在使用OPCache。所以我需要在类可用之前重新启动我的Docker容器。(显然不仅是完全定义的类,而且缺乏类是OPCached的。这是一件很有趣的事情。

相关内容

  • 没有找到相关文章

最新更新