Twig - 确定是否为移动代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Twig - 确定是否为移动代理相关的知识,希望对你有一定的参考价值。
我正在一个平台上开发一个站点,该平台使用Twig(Symfony)语言作为模板,在一个地方,我需要根据用户是否打开来更改布局(禁用默认块并加载不同的块)移动设备或桌面。
我知道如何在php中使用它(使用“check_user_agent('mobile')”变量),但这在Twig中不起作用...而且我遇到了对Twig“Mobile Detect Bundle”的引用,但我不知道如何安装它(与cPanel共享托管)。
Soo ...有没有办法在Twig中检测移动用户代理,而无需安装任何东西?
在每个请求期间,Symfony默认情况下将在Twig和PHP模板引擎中设置全局模板变量应用程序。表示当前请求的Request对象:app.request
因此,如果您想了解用户代理,可以在模板中使用app.request.headers
。
例如:
{{ app.request.headers.get('User-Agent')}}
如果您已经有PHP代码根据用户代理返回true / false,那么Write a custom Twig Extension运行该代码非常简单,但是来自Twig。
或者,您可以在控制器中运行检查并传入结果,或者在“kernel.controller事件”中运行检查甚至在调用控制器操作之前运行检查(可能将其放入请求'属性',它可以在也可以在模板中查看)。
General Solution for PHP
https://github.com/serbanghita/Mobile-Detect/是一个很棒的维护php类来检测用户代理,并不仅限于Symfony。
For Symfony
要将上述类与Symfony一起使用,您可以自己编写一个twig extension,也可以使用这个Mobile Detect Twig Extension来完成这项工作。
以上是关于Twig - 确定是否为移动代理的主要内容,如果未能解决你的问题,请参考以下文章
Twig 中是不是有任何方法可以确定方法/参数是不是存在而不将 if 放在任何地方?