Twig - 确定是否为移动代理

问题描述 投票:2回答:2

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

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

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

php symfony mobile jquery-mobile
2个回答
1
投票

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

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

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

0
投票

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

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


0
投票

General Solution for PHP

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

For Symfony

要将上述类与Symfony一起使用,您可以自己编写一个twig extension,也可以使用这个Mobile Detect Twig Extension来完成这项工作。

© www.soinside.com 2019 - 2024. All rights reserved.