【问题标题】:Twig - determine if mobile agent or notTwig - 确定是否移动代理
【发布时间】:2017-10-07 20:38:11
【问题描述】:

我正在使用 Twig (Symfony) 语言作为其模板的平台上开发一个站点,并且在一个地方,我需要根据是否用户在移动设备或桌面上。

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

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

【问题讨论】:

    标签: php symfony mobile jquery-mobile


    【解决方案1】:

    PHP 通用解决方案

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

    对于 Symfony

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我认为@snela、@alisterbulman 是对的...您可以通过Twig Extension 解决您的问题。
        猜你喜欢
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-01
        • 2011-01-29
        • 2011-05-30
        相关资源
        最近更新 更多