2017-10-07 73 views
0

我正在为其模板使用Twig(Symfony)语言的平台上开发网站,并且在一个地方,我需要更改布局(禁用默认块并加载根据用户是在移动设备上还是在桌面上)。我知道如何在PHP中使用它(使用“check_user_agent('mobile')”变量),但这在Twig中不起作用......并且我遇到了对Twig“Mobile Detect Bundle“,但我不知道如何安装它(与cPanel共享主机)。树枝 - 确定是否移动代理

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

回答

0

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

或者,您可以运行在控制器的检查和传递的结果,或在“kernel.controller事件”,甚至运行检查被称为一个控制器动作之前(可能是把它变成一个请求“属性” ,它也可以在模板中进行检查)。

+0

我觉得@snela,@alisterbulman是正确的......你可以用'枝条Extension'解决您的问题。 –

0

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

所以,如果你想知道的用户代理,你可以在模板中使用app.request.headers
e.g:

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