1

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

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

第 1 行的 PDOneBundle::pdone.html.twig 中不存在过滤器“empty”

现在,如果我将服务定义移到config/config.yml我得到了这个错误:

编译错误:不能对表达式的结果使用 isset()(您可以改用“null !== expression”)

这让我觉得捆绑包没有通过 DependecyInjection,我在这里缺少什么?为什么会有不同的错误?

4

1 回答 1

3

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

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

  • Bundle的根目录应该包含DependencyInjection目录
  • 在 中DependencyInjectionExtension类应命名为<BUNDLE>Extension,不带“Bundle”后缀。你的情况就是PDOOneExtension这样。
于 2015-04-14T18:57:58.133 回答