服务未加载到 Resources/config/services.yml,为什么?
Services not loaded at Resources/config/services.yml, why?
我 运行 这里有一个问题,我不知道为什么或哪里失败了,也许我错过了一些配置,无论如何,我在 DependencyInjection\AppExtension.php
文件中有这段代码:
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class AppExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
然后在 Resources/config/services.yml
我有这个:
services:
pdone.twig.extension:
class: GroupDCA\PDOneBundle\Extension\PDOneTwigExtension
tags:
- { name: twig.extension }
由于某种原因无法正常工作。这意味着我得到了这个错误:
The filter "empty" does not exist in PDOneBundle::pdone.html.twig at line 1
现在,如果我将服务定义移至 config/config.yml
,则会收到此错误:
Compile Error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
这让我觉得捆绑包没有经过 DependecyInjection,我在这里缺少什么?为什么会出现不同的错误?
1) 您是否将捆绑包添加到 AppKernel
?
2) 我不确定,但我认为您必须遵循 Extension
class 的命名约定:
- Bundle 的根目录应包含
DependencyInjection
目录
- 在
DependencyInjection
中,Extension
class应命名为<BUNDLE>Extension
,不带"Bundle"后缀。在你的情况下就是 PDOOneExtension
。
我 运行 这里有一个问题,我不知道为什么或哪里失败了,也许我错过了一些配置,无论如何,我在 DependencyInjection\AppExtension.php
文件中有这段代码:
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class AppExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}
然后在 Resources/config/services.yml
我有这个:
services:
pdone.twig.extension:
class: GroupDCA\PDOneBundle\Extension\PDOneTwigExtension
tags:
- { name: twig.extension }
由于某种原因无法正常工作。这意味着我得到了这个错误:
The filter "empty" does not exist in PDOneBundle::pdone.html.twig at line 1
现在,如果我将服务定义移至 config/config.yml
,则会收到此错误:
Compile Error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
这让我觉得捆绑包没有经过 DependecyInjection,我在这里缺少什么?为什么会出现不同的错误?
1) 您是否将捆绑包添加到 AppKernel
?
2) 我不确定,但我认为您必须遵循 Extension
class 的命名约定:
- Bundle 的根目录应包含
DependencyInjection
目录 - 在
DependencyInjection
中,Extension
class应命名为<BUNDLE>Extension
,不带"Bundle"后缀。在你的情况下就是PDOOneExtension
。