Symfony: файл cookie недоступен в шаблоне при установке - PullRequest
0 голосов
/ 15 мая 2018

У меня проблема с cookie, когда в контроллере по тому же запросу я не получаю его сразу в шаблоне.

Однако, когда я перезагружаюсь, он появляется.

Контроллер

        $response = $this->render(':frontend/homepage:homepage.html.twig');

        $now = new \DateTime();

        $response->headers->setCookie
        (
            new Cookie
            (
                'affiliateTracker',
                serialize
                (
                    array
                    (
                        'name' => 'John Doe'
                    )
                ),
                $now->modify('+24 hours'), '/'
            )
        );

        $response->sendHeaders();

        return $response;

Шаблон

 {% if app.request.cookies.get('affiliateTracker') %}
                            <div class="alert text-center alert-success">
                                <i class="fa fa-user"></i> <strong>Your Name:</strong> {{ app.request.cookies.get('affiliateTracker').name }}
                            </div>
                        {% endif %}

1 Ответ

0 голосов
/ 15 мая 2018

Вы не можете получить куки сразу, как написано в этом ответе .Одним из решений является получение его на стороне клиента с помощью JavaScript:

<script>
  function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
if(getCookie('affiliateTracker') !== ""){
document.write( '<div class="alert text-center alert-success"><i class="fa fa-user"></i> <strong>Your Name:</strong>'+getCookie('affiliateTracker')+'</div>' );
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...