Twig - 确定是否为移动代理

时间:2017-10-07 20:38:11

标签: php symfony mobile jquery-mobile

我正在使用Twig(Symfony)语言为其模板开发平台,在一个地方,我需要根据是否更改布局(禁用默认块并加载不同的块)用户在移动设备或桌面上。

我知道如何在PHP中使用它(使用“check_user_agent('mobile')”变量),但这在Twig中不起作用...而且我遇到了对Twig“Mobile Detect”的引用捆绑“,但我不知道如何安装它(与cPanel共享托管)。

Soo ......有没有办法在Twig中检测移动用户代理,而无需安装任何东西?

3 个答案:

答案 0 :(得分:1)

在每个请求期间,默认情况下,Symfony将在Twig和PHP模板引擎中设置全局模板变量应用程序。 表示当前请求的Request对象: app.request

因此,如果您想了解用户代理,可以在模板中使用 app.request.headers
例如:

{{ app.request.headers.get('User-Agent')}}

答案 1 :(得分:0)

如果您已经有PHP代码根据用户代理返回true / false,Write a custom Twig Extension运行该代码非常简单,但是来自Twig。

或者,你可以在控制器中运行检查并传入结果,或者在kernel.controller事件'甚至在调用控制器操作之前运行检查(可能将其放入Request'属性',也可以在模板中检查它。)

答案 2 :(得分:0)

PHP通用解决方案

https://github.com/serbanghita/Mobile-Detect/是一个很棒的维护的php类,用于检测用户代理,并且不仅限于Symfony。

对于Symfony

要将上面的类与Symfony一起使用,您可以自己编写twig extension或使用可以完成此任务的Mobile Detect Twig Extension

相关问题