symfony - 来自 Twig 中的 cookie 的 boolean 值

标签 symfony cookies boolean twig

当我的网站启动时,我有一个简单的 js 脚本来检测是否在高分辨率设备上查看该网站,然后将该值保存到 cookie。

{% if app.request.cookies.has('d_p_r') %}
    {% set retina = app.request.cookies.get('d_p_r') %}
{% else %}
    {% set retina = false %}
    <script> ... </script>
{% endif %}

我检查我的视网膜值是否已设置为在我的网站某处输出 {{ retina }},并且它在我的计算机上返回“false”,在我的 iPad 上返回“true”。到目前为止,一切顺利。

问题是当我尝试访问 boolean 值时。

{% if retina == true %}
    <img alt="{{ alt }}" src="{{ ('img/' ~ img)|imagine_filter(filter) }}">
{% else %}
    {% if big is defined %}
    <img  alt="{{ alt }}" src="{{ asset('img/' ~ img) }}">
    {% else %}
    <img alt="{{ alt }}" src="{{ ('img/' ~ img)|imagine_filter(filter ~ '@2x') }}">
    {% endif %}
{% endif %}

{% if retina == true %} 无法正常工作。如果我将其更改为 == false,我会在各处生成视网膜图片。就好像它总是返回 true,尽管 {{ retina }} 的值返回 false。

我不知道我在这里做错了什么。我尝试只执行 {% if retina %} 但这没有帮助。我还清除了所有修复此问题的尝试之间的缓存。

最佳答案

问题是 retina 是一个字符串,而不是 boolean 值。 Cookie 只是字符串,不支持类型。并且 $nonEmtpyString == true 始终为 true。因此,您可以使用 retina == 'true' 来代替。

但是如果你想在模板中使用 boolean 值,你可以这样做:

{% set retina = app.request.cookies.get('d_p_r') == 'true' ? true : false %}

关于symfony - 来自 Twig 中的 cookie 的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594001/

相关文章:

php - 两种形式 - 两个提交按钮。 Controller 如何识别单击了哪个按钮?

php - Symfony2 从数据库中查询特定值

java - Android Webkit CookieManager : How to get all cookies via CookieManager?

java - java如何测试条件

php - Symfony2 安全,使用 sha512,不工作。收到错误的凭据消息

java - 如何使用 App Engine url 获取服务像网络浏览器一样处理 cookie?

c# - 表单例份验证 - 共享 Cookie MVC 和 Web 表单

c# - 单元测试是否可以通过接受 boolean 值作为开关来执行双重任务,或者我应该编写两个单独的测试来复制测试代码吗?

c - 黑白棋游戏 – C 编程中的棋盘配置和走棋合法性检查

json - Symfony 3 API REST - try catch JSON 响应格式的异常