Symfony 2 Symfony \ Component \ HttpFoundation HeaderBag标头

时间:2014-09-11 13:00:30

标签: php symfony

所以在Symfony2中我需要做以下事情:

$response->headers->addCacheControlDirective();
$response->headers->addCacheControlDirective();
$response->headers->addCacheControlDirective();
$response->headers->addCacheControlDirective();

以上方法在里面:

namespace Symfony\Component\HttpFoundation;

class HeaderBag

我通过更新我的app_dev.php和app.php并添加以下内容来实现它:

$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);

$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('max-age', 0);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);

这是修改标题的正确方法吗?我应该做些什么吗?

有点新的Symfony,我想以正确的方式做所有事情。

1 个答案:

答案 0 :(得分:1)

您的解决方案可行,但这不是最佳做法。 Symfony2的一个强大功能是他的基于事件的kernel,IMO在kernel.response事件上编写监听器的更好方式是更改标头。此外,例如,通过这种方式,您可以检查您的路线。

可以找到HttpCache Listener的一个时髦实现,还可以查看他的服务definition