2013-10-21 2 views
4

특정 쿠키 값이 설정되었는지 감지하기 위해 내보기에서 나뭇 가지 주석을 사용하려고하는데 나뭇 가지에 익숙하지 않고 현재 작동하지 않습니다.Symfony2에서 쿠키를 올바르게 확인하려면 어떻게해야합니까?

먼저 컨트롤러에 쿠키를 설정했는데 브라우저에서 쿠키를 볼 수 있습니다. 다음은 관련 PHP 코드입니다.

if (isset($_GET['accept-cookie'])) { 
    setcookie("acceptCookies", "true", time() + (86400 * 300)); 
} 

내 브라우저에서 쿠키를보고 내용이 올바르게 true로 설정되었는지 확인할 수 있습니다.

이제 내보기에서 쿠키가 있는지 확인해야합니다. 그렇지 않으면 쿠키 배너가 표시되어야합니다. 여기에 코드입니다 :

{% 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 %} 

나는이 제대로 작동합니다 읽은 문서에 따르면, 그러나, 나는 브라우저가 브라우저에 존재하는 것을 볼 수 있지만 쿠키 배너를 표시하고 있습니다.

어떻게 해결해야합니까?

답변

0

귀하의 HTML 나뭇 가지 코드에 존재하지 않는 $_GET['accept_cookie'] 값을 확인하십시오. 이것이 브라우저가 쿠키 배너를 표시하는 이유입니다. 양식을 사용하여 $_GET['accept_cookie']을 가져 가야합니다.

+0

어떻게'$ _GET [ 'accept_cookie']'값을 얻습니까? – david

+0

죄송합니다. 혼란 스럽습니다. 왜 내 나뭇 가지 코드에 $ _GET이 필요합니까? 쿠키는 컨트롤러에 설정되어 있으며 정상적으로 작동합니다. 쿠키가 설정되면 문제가있는 쿠키 만 읽습니다. – jessenorton

6

이것이 나뭇 가지 템플릿에서 쿠키에 액세스하는 가장 좋은 방법이라고 생각합니다.

이 변수는 모든 쿠키

을 포함

{% app.request.cookies %}

예 : http://enarion.net/news/2012/access-cookies-in-a-twig-template-using-symfony2/

이 또한 방법에에 심포니 문서를 볼 걸릴 :

{% if app.request.cookies.has('acceptCookies') %} Yes you accept cookies {% endif %}

전체 자습서를 참조 쿠키를 올바른 방법으로 설정하십시오 : http://symfony.com/doc/current/components/http_foundation/introduction.html#setting-cookies

+0

고마워, 나는 그것을 할 올바른 방법처럼 보이는 데 동의합니다. 그리고 그것은 나뭇 가지에서 쿠키를 확인하는 방법을 연구 할 때 확인한 자습서 중 하나입니다. 안타깝게도 app.request.cookies.has를 사용하면 제안한 것처럼 작동하지 않습니다. 나는 더 큰 문제를 다루고 있을지도 모른다라고 생각한다. – jessenorton

+0

나는 쿠키를 설정하는 방법에 대한 추가 예제로 나의 대답을 편집했다. (마지막 링크 참조) – acrobat

+0

고마워. 그것은 어리석은 질문 일지 모르지만 심포니의 방법에 관계없이 쿠키가 다르게 설정되면 나뭇 가지를 다르게 읽습니까? 제가 작업하고있는 사이트는 symfony2를 실제로 사용하지 않지만 나뭇 가지 어노테이션을 사용하는 자체 커스텀 MVC입니다. 사이트의 원본 작성자에게 연락을 시도했지만 불행하게도 어디에서 잘못했는지 확인할 수 없었습니다. – jessenorton

관련 문제