Symfony:无法加载Twig Extension运行时

时间:2018-06-13 18:15:52

标签: symfony twig

我正在关注this guide向Symfony 4项目添加自定义Twig扩展。

我的App\Twig\AppExtension如下:

<?php

namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class AppExtension extends AbstractExtension
{
    public function getFunctions()
    {
        return [
            new TwigFunction('getController', [AppRuntime::class, 'getController'])
        ];
    }
}

我的App\Twig\AppRuntime

<?php

namespace App\Twig;

use Symfony\Component\HttpFoundation\RequestStack;

class AppRuntime
{
    private $request;

    public function __construct(RequestStack $requestStack)
    {
        $this->request = $requestStack->getCurrentRequest();
    }

    public function getController()
    {
        return $this->request->get('_controller');
    }
}

但如果我尝试在模板中使用getController()函数,我会遇到以下异常: 无法加载“App \ Twig \ AppRuntime”运行时。

Twig模板的以下行会产生此错误:

echo twig_escape_filter($this->env, $this->env->getRuntime('App\Twig\AppRuntime')->getController(), "html", null, true);

php bin/console debug:containerApp\Twig\AppRuntime显示为正确的服务。我也尝试将App\Twig\AppRuntime设置为公共服务,但没有运气。

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

很可能您忘了标记您的树枝扩展服务。

在这里,您可以在第一个示例中解释如何执行此操作: https://symfony.com/doc/current/service_container/tags.html