Read and Write Cookie in Symfony2

前端 未结 6 441
無奈伤痛
無奈伤痛 2020-12-12 18:24

I want to store some information in the local browser cookie. After hours looking for a nice tutorial, I managed to store some data in a non-session cookie:

6条回答
  •  有刺的猬
    2020-12-12 19:02

    This is the correct way of setting cookie. To read cookie already written in the browser do:

    $request->cookies->get('myCookie');
    

    But after I created cookie in the $response object:

    $cookie = new Cookie('myCookie', 'contentOfMyCookie');
    $response = new Response();
    $response->headers->setCookie($cookie);
    

    I call this method:

    $response->headers->getCookies();
    

    I get an array of cookies, which are to be written in the browser - not those already existing there.

    Figuratively, between $request and $response there is a time of executing controller's code.

    Besides, in a twig template you can use

    {{ app.request.cookies.get('myCookie') }}
    

    you thus get value of the cookie already written in the browser, not that from the $response object! Newly created cookie from the browser you can read only after having reloaded page (ajax doesn't need to reload whole page).

    To sum it up, you can read cookies using $request object, and create them with $response object. (Obviously, for some reasons, you can also read $response object cookies - but these are rather rare situations).

提交回复
热议问题