Не могу установить новое печенье
Я пытаюсь установить cookie, чтобы сохранить выбор локали.
С помощью kernel.response
Событие, я сделал это:
public function setCookie(FilterResponseEvent $event) {
/** @var Response $response */
$response=$event->getResponse();
$cookie=new Cookie('_locale', $event->getRequest()->attributes->get('_locale'), strtotime('now + 1 year'), '/', $event->getRequest()->getHttpHost());
$response->headers->setCookie($cookie);
}
_locale
, если он не существует, устанавливается из kernel.request
событие.
Проблема в том, что после получения ответа в веб-браузере куки не установлены.
Это даже не в дампе ответа.
Свалка веток
ParameterBag {#13 ▼
#parameters: array:2 [▼
"PHPSESSID" => "5aulgi7dbut4mfjmpgvc48cr2o"
"REMEMBERME" => "QXBwQnVuZGxlXEVudGl0eVxVc2VyOmNISmxZMmxsYkM1bllXMWxjMEJuYldGcGJDNWpiMjA9OjE1NTAzMzM1OTM6ODFiNTllMmU0MDA4YjdiOWU1Y2Q0ZjJlN2E4Y2ExZWUxOTdkOWE1YjIxNDA0NDdmZTU2MGRj ▶"
]
}
HeaderBag {#16 ▼
#headers: array:11 [▼
"cookie" => array:1 [▼
0 => "PHPSESSID=5aulgi7dbut4mfjmpgvc48cr2o; REMEMBERME=QXBwQnVuZGxlXEVudGl0eVxVc2VyOmNISmxZMmxsYkM1bllXMWxjMEJuYldGcGJDNWpiMjA9OjE1NTAzMzM1OTM6ODFiNTllMmU0MDA4YjdiOWU1Y2Q0ZjJlN2E4Y2ExZWUxOTdkOWE1YjIxNDA0NDdmZTU2MGRjOGFiMTAwOWZhZA%3D%3D ◀"
]
]
}
"Забавный факт", хотя, если я добавлю dump($event); exit();
после $response->headers->setCookie($cookie);
Я могу видеть мое печенье в event.response.headers
дамп ядра.ответ
FilterResponseEvent {#995 ▼
-response: Response {#903 ▼
+headers: ResponseHeaderBag {#994 ▼
#cookies: array:1 [▼
"sphere.gdn" => array:1 [▼
"/" => array:1 [▼
"_locale" => Cookie {#154 ▼
#name: "_locale"
#value: "en"
#domain: "sphere.gdn"
#expire: 1581376164
#path: "/"
#secure: false
#httpOnly: true
-raw: false
-sameSite: null
}
]
]
]
}
}
Мои события слушателя найдены Symfony
Registered Listeners for "kernel.request" Event
===============================================
------- ------------------------------------------------------------------------------------------------- ----------
Order Callable Priority
------- ------------------------------------------------------------------------------------------------- ----------
#10 AppBundle\Service\LocaleHandlerService::setLocale() 0
------- ------------------------------------------------------------------------------------------------- ----------
Registered Listeners for "kernel.response" Event
================================================
------- -------------------------------------------------------------------------------------------- ----------
Order Callable Priority
------- -------------------------------------------------------------------------------------------- ----------
#1 AppBundle\Service\LocaleHandlerService::setCookie() 0
------- -------------------------------------------------------------------------------------------- ----------
Может кто-нибудь сказать мне, что мне не хватает, чтобы установить мое печенье?
1 ответ
Попробуйте это установить.
$cookie=new Cookie('_locale', 'en', strtotime('now + 1 year'));
И читать
$cookies = $request->cookies;