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 放在任何地方?

在CLI中执行时,Symfony`url()`Twig函数如何确定绝对路径?

使用 Twig 生成纯 JSON 响应是不是合适?

使用 Twig 处理动态 Javascript 文件

Symfony2 twig 移动模板后备

如何检查刚体是否在移动?