在我的布局(Twig(中,我想从中间件身份验证中检索一个值。
如果我把,在模板中.global.pĥp:
'twig' => [
'globals' => [
// Variables to pass to all twig templates
'auth' => (new ZendAuthenticationAuthenticationService())->hasIdentity(),
],
],
在布局默认值.html.twig
{% if auth %}
Connect
{% else %}
Not connect
{% endif %}
这段代码有效,但是,这是一个好方法吗?
谢谢:)
一个好方法。首先,使用配置文件设置全局模板数据是针对静态数据的。如果要缓存配置,在配置中创建服务将失败。我不知道 zend 拍卖服务,但最好从服务管理器或您正在使用的任何其他容器中获取它。这样,您可以确保应用程序中的任何地方都使用相同的服务。
对于模板中需要的常见变量或服务,我在模板渲染器周围有一个包装器。因此,我没有调用原始模板渲染器,而是调用自己的类,并在其中使用公共数据填充模板。
您还可以使用 TemplateRendererInterface::addDefaultParam 注入默认参数。在任何其他中间件中,您可以注入模板渲染器,设置所需的默认数据,然后稍后在模板中访问它。