我正在尝试在我的视图中使用树枝注释来检测是否已设置某个cookie值,但我对twig不是很熟悉,而且它目前不起作用。
首先,我在控制器中设置了cookie,我可以从浏览器中看到它存在。以下是相关的 PHP 代码:
if (isset($_GET['accept-cookie'])) {
setcookie("acceptCookies", "true", time() + (86400 * 300));
}
在我的浏览器中,我可以查看cookie并确认内容已正确设置为true。
现在在我看来,我需要检查 cookie 是否存在,如果不存在,则应显示 cookie 横幅。这是代码:
{% if app.request.cookies.get("acceptCookies") != null %}
<h1>Cookies are set!</h1>
{% else %}
<div id="cookieBanner">
<div id="cookieContainer">
<p>We use cookies on this website. By using this website, we'll assume that you consent to <a href="/cookies">the cookies we set.</a></p>
<a href="?accept-cookie" class="button">Okay, continue.</a>
</div>
</div>
{% endif %}
根据我阅读的文档,这应该可以正常工作,但是,即使我可以看到浏览器中存在浏览器,它也会继续显示cookie横幅。
我应该如何解决这个问题?
我认为这是在树枝模板中访问 cookie 的最佳方式!
此变量包含您的所有饼干
{% app.request.cookies %}
例:
{% if app.request.cookies.has('acceptCookies') %}
Yes you accept cookies
{% endif %}
查看完整教程:http://enarion.net/news/2012/access-cookies-in-a-twig-template-using-symfony2/
另请查看有关如何以正确方式设置cookie的symfony文档:http://symfony.com/doc/current/components/http_foundation/introduction.html#setting-cookies
在你的php中,你检查你的html树枝代码中不存在的$_GET['accept_cookie']
值。这就是浏览器显示 cookie 横幅的原因。您必须使用表格来获取$_GET['accept_cookie']
。