4

我试图在我的视图中使用 twig 注释来检测是否设置了某个 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 横幅。

我应该如何解决这个问题?

4

2 回答 2

6

我认为这是在树枝模板中访问 c​​ookie 的最佳方式!

此变量包含您的所有 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

于 2013-10-21T12:49:36.023 回答
0

在您的 php 中,您检查$_GET['accept_cookie']html 树枝代码中不存在的值。这就是浏览器显示 cookie 横幅的原因。您必须使用表格来获取$_GET['accept_cookie']

于 2013-10-21T12:46:07.073 回答