我正在使用Twig(Symfony)语言为其模板开发平台,在一个地方,我需要根据是否更改布局(禁用默认块并加载不同的块)用户在移动设备或桌面上。
我知道如何在PHP中使用它(使用“check_user_agent('mobile')”变量),但这在Twig中不起作用...而且我遇到了对Twig“Mobile Detect”的引用捆绑“,但我不知道如何安装它(与cPanel共享托管)。
Soo ......有没有办法在Twig中检测移动用户代理,而无需安装任何东西?
答案 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)
https://github.com/serbanghita/Mobile-Detect/是一个很棒的维护的php类,用于检测用户代理,并且不仅限于Symfony。
要将上面的类与Symfony一起使用,您可以自己编写twig extension或使用可以完成此任务的Mobile Detect Twig Extension。