Это правильный способ установки cookie.
Чтобы прочитать cookie, уже записанные в браузере, выполните:
$request->cookies->get('myCookie');
Но после того, как я создал cookie в объекте $ response:
$cookie = new Cookie('myCookie', 'contentOfMyCookie');
$response = new Response();
$response->headers->setCookie($cookie);
Я называю этот метод:
$response->headers->getCookies();
Я получаю массив файлов cookie, которые нужно записать в браузере, а не те, которые там уже существуют.
Образно, между $ request и $ response существует время выполнения кода контроллера.
Кроме того, в шаблоне ветки вы можете использовать
{{ app.request.cookies.get('myCookie') }}
Таким образом, вы получаете значение файла cookie, уже записанного в браузере, а не объекта $ response! Вновь созданный файл cookie из браузера вы можете прочитать только после перезагрузки страницы (ajax не нужно перезагружать всю страницу).
Чтобы подвести итог, вы можете прочитать файлы cookie , используя $ request объект, и создать их с $ response объектом. (Очевидно, что по некоторым причинам вы также можете прочитать куки-файлы $ response - но это довольно редкие ситуации).