无法在 Symfony 4 中创建 Twig 全局变量

Unable to create Twig Global Variable in Symfony 4

我已经使用 Symfony 3.3 完成了它,但是使用 Symfony 4 它不起作用。

App\Twig\NotifExt:

    public function getGlobals(){

    $count = 'Hello World';

    return array('count' => $count);        
}

twig_extensions.yaml:

twig:
     globals:
          'count': '%count%'

base.html.twig:

<a class="nav-item nav-link" href="#">{{ count }} </a>

我在以前的版本中做过类似的事情并且运行良好,但是对于 Symfony 4 我遇到了以下错误:

You have requested a non-existent parameter "count".

第一步是从 twig 全局变量中定义的 count 变量中删除单引号。

在您的问题中,您似乎使用参数定义了 count 键,但要使用服务 (class),请阅读 How to Inject Variables into all Templates (i.e. global Variables):

twig:
    globals:
        yourService: '@App\YourService\Class'

然后引用服务方法获取count键:

{{ yourService.getCount() }}

你有很多方法可以做到这一点,但你可以尝试这个简单的例子来获得更多想法。

如果问题没有解决,您可能需要升级您的问题,提供有关如何设置 count 键的更多详细信息。

PS:你清缓存了吗?

我在检查类似问题时发现了其他东西 - 这可能对某些人有帮助。

如果您渲染单个块(使用 $twig->renderBlock())而不是进行完整渲染,则全局变量不会自动合并,因此您需要执行以下操作:

        $context = $this->twig->mergeGlobals($parameters);
        $body = $template->renderBlock('body', $context);

更多信息: https://github.com/symfony/symfony/issues/8517#issuecomment-21238584