我在这里遇到了一个问题,我不知道为什么或在哪里失败,也许我错过了一些配置左右,无论如何,我在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
的。