我已经使用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中,出现以下错误:
您请求的参数“ count”不存在。
答案 0 :(得分:1)
第一步是从twig全局变量中定义的count
变量中删除单引号。
在您的问题中,您似乎使用参数定义了count
键,但要使用服务(类),请阅读How to Inject Variables into all Templates (i.e. global Variables):
twig:
globals:
yourService: '@App\YourService\Class'
,然后引用服务方法以获取count
密钥:
{{ yourService.getCount() }}
您有很多方法可以做到这一点,但是您可以尝试使用这个简单的示例来获得更多的想法。
如果问题仍未解决,则可能需要升级您的问题,并提供有关如何设置count
键的更多详细信息。
PS:您是否清除了缓存?
答案 1 :(得分:0)
在检查类似问题时,我发现了其他东西-这可能对某人有用。
如果您渲染单个块(使用$twig->renderBlock()
)而不是进行完整渲染,则全局变量不会自动合并,因此您需要执行以下操作:
$context = $this->twig->mergeGlobals($parameters);
$body = $template->renderBlock('body', $context);
更多信息: https://github.com/symfony/symfony/issues/8517#issuecomment-21238584