【发布时间】:2011-12-16 17:01:48
【问题描述】:
我在 Symfony2 中发现了一些处理 cookie 的问题和页面,但对于它应该如何工作似乎没有任何明确的共识。当然,我可以回退到使用 PHP 的原生 setcookie 函数,但我觉得使用 Symfony2 也应该很容易。
我的控制器中有一个操作,我只想从中返回一个附加了 cookie 的视图。到目前为止,我看到的例子基本上是这样的:
use Symfony\Compentnt\HttpFoundation\Response;
public function indexAction() {
$response = new Response();
$response->headers->setCookie(new Cookie('name', 'value', 0, '/');
$response->send();
}
问题在于它发送响应......并且不呈现视图。如果我在不发送标题的情况下设置 cookie,则会呈现视图,但不会发送标题(cookie)。
四处寻找,我在 Response 对象中找到了 sendHeaders() 方法,所以我现在在返回之前在我的操作中手动调用它,这似乎有效:
public function indexAction() {
...
$response->sendHeaders();
return array('variables' => 'values');
}
但这真的是预期的模式吗?在以前的 symfony 版本中,我可以在我的控制器中设置标题,并期望视图控制器处理发送我发送的任何内容。现在看来,我必须从操作中手动发送它们以使其正常工作,这意味着我必须从我设置标题的任何操作中调用它。是这种情况还是我遗漏了一些很明显的东西甚至没有人费心在任何文档中提及它?
【问题讨论】:
标签: cookies http-headers symfony