服务未在 Resources/config/services.yml 加载,为什么



我在这里遇到了一个问题,我不知道为什么或在哪里失败,也许我错过了一些配置左右,无论如何,我在DependencyInjectionAppExtension.php文件中有这段代码:

use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentConfigFileLocator;
use SymfonyComponentHttpKernelDependencyInjectionExtension;
use SymfonyComponentDependencyInjectionLoader;
class AppExtension extends Extension
{
    /**
     * {@inheritdoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);
        $loader = new LoaderYamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

然后在Resources/config/services.yml我有这个:

services:
    pdone.twig.extension:
        class: GroupDCAPDOneBundleExtensionPDOneTwigExtension
        tags:
            -  { name: twig.extension }

由于某种原因不起作用。这意味着我得到了这个错误:

过滤器"空"在PDOneBundle::p done.html.twig第1行不存在

现在,如果我将服务定义移动到config/config.yml,则会出现此错误:

编译错误:无法在表达式的结果上使用 isset()(您可以使用"null !== 表达式"代替)

这让我认为捆绑包没有经过依赖注入,我在这里缺少什么?为什么会出现不同的错误?

1)您是否将捆绑包添加到AppKernel

2)我不确定,但我认为您必须遵循Extension类的命名约定:

  • 捆绑包的根目录应包含DependencyInjection目录
  • DependencyInjection中,Extension类应该命名为<BUNDLE>Extension,没有"Bundle"后缀。在你的情况下,这将是PDOOneExtension的。

最新更新