Php 小枝罐头';找不到在TwigExtension类中创建的函数

Php 小枝罐头';找不到在TwigExtension类中创建的函数,php,symfony,twig,twig-extension,Php,Symfony,Twig,Twig Extension,我试图调用TwigExtension(Symfony 3.3)中创建的Twig函数。问题是我找不到我做错了什么,我也不知道为什么它不起作用 有人知道问题出在哪里吗 这是我得到的错误: Unknown "getCurrentLocale" function. 这是我的密码: 小枝延伸: <?php namespace AppBundle\Extension; use Symfony\Component\HttpFoundation\Request; class AppTwigExte

我试图调用TwigExtension(Symfony 3.3)中创建的Twig函数。问题是我找不到我做错了什么,我也不知道为什么它不起作用

有人知道问题出在哪里吗

这是我得到的错误:

Unknown "getCurrentLocale" function.
这是我的密码:

小枝延伸:

<?php

namespace AppBundle\Extension;

use Symfony\Component\HttpFoundation\Request;

class AppTwigExtensions extends \Twig_Extension
{
    protected $request;

    public function __construct(Request $request)
    {

        $this->request = $request;
    }

    public function getFunctions()
    {
        return [
            new \Twig_SimpleFunction('getCurrentLocale', [$this, 'getCurrentLocale']),

        ];
    }

    public function getCurrentLocale()
    {
        dump ($this->request);
        /*
         * Some code
         */
        return "EN";

    }



    public function getName()
    {
        return 'App Twig Repository';
    }
}
细枝:


那么,您对扩展的总体计划是什么呢。当twig中的
app.request.locale
返回当前区域设置时,您还需要它吗?(确实如此)

默认情况下,
@request
服务不再存在

在Symfony 3.0中,我们将通过从中删除请求服务来一次性解决此问题

这就是为什么你应该得到这样的东西:

服务“twig.extension”依赖于不存在的服务“request”

所以你做了这个服务?装了吗?这是怎么一回事?您可以使用
bin/console debug:container request
查看与
request
匹配的所有可用服务名称

如果您确实需要扩展中的request对象,如果您计划用它做更多的事情,您可能希望将
request\u stack
服务与
$request=$requestStack->getCurrentRequest()一起注入

不知何故,代码、symfony版本和您发布的错误消息并不相关。同样在我的测试中,一旦删除服务参数,它就工作得很好。亲自尝试减少占地面积并使其尽可能简单,在我的情况下:

services.yml:

AppTwigExtensions.php:


从那里开始,找出什么时候出错。

您是否尝试过
bin/console缓存:清除
因为即使在dev中,缓存有时仍然是一个问题。我看不到任何其他可能会让它变得奇怪的东西-另一方面,使用twig中的
app.request
可以访问请求对象。@JennevanderMeer我删除了缓存,错误仍然存在。感谢您的帮助。我检查了我的服务,发现我的服务与此同名。
services:

twig.extension:
    class: AppBundle\Extension\AppTwigExtensions
    arguments: ["@request"]
    tags:
      -  { name: twig.extension }
{{ attribute(country.country, 'name' ~ getCurrentLocale() )  }}
twig.extension:
    class: AppBundle\Extension\AppTwigExtensions
    tags:
        -  { name: twig.extension }
namespace AppBundle\Extension;
class AppTwigExtensions extends \Twig_Extension {
    public function getFunctions() {
        return [
            new \Twig_SimpleFunction('getCurrentLocale', function () {
                return 'en';
            }),
        ];
    }
}