繁体   English   中英

Zend表现力-布局

[英]Zend expressive - Layout

在我的布局(Twig)中,我想从中间件身份验证中检索值。

如果我把它放在templates.global.pĥp中:

'twig' => [
        'globals' => [
            // Variables to pass to all twig templates
            'auth' => (new \Zend\Authentication\AuthenticationService())->hasIdentity(),
        ],
    ],

并在布局中default.html.twig

{% if auth %}
    Connect
{% else %}
    Not connect
{% endif %}

此代码有效,但这是一个好方法吗?

谢谢 :)

这不是一个好方法。 首先,使用配置文件设置全局模板数据意味着使用静态数据。 如果要缓存配置,则在配置中创建服务将失败。 我不知道zend拍卖服务,但是最好从服务管理器或您使用的任何其他容器中获取它。 这样,您可以确保在应用程序中的每个地方都使用相同的服务。

对于模板中所需的公共变量或服务,我在TemplateRenderer周围有一个包装器。 因此,我没有调用原始的模板渲染器,而是调用了自己的类,并在其中用通用数据填充了模板。

您还可以使用TemplateRendererInterface :: addDefaultParam注入默认参数。 在任何其他中间件中,您可以注入templaterenderer,设置所需的默认数据,然后再在模板中对其进行访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM