我试图设置一个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
事件。
问题是,在web浏览器上收到响应后,coockie没有设置。
它甚至不在响应转储中。
小枝转储
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
kernel.response转储
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
------- -------------------------------------------------------------------------------------------- ----------
有人能告诉我我缺了什么来做饼干吗?