当我的网站启动时,我有一个简单的 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/