2014-09-11 53 views
0

所以在Symfony2中,我需要做到以下幾點:的Symfony 2的Symfony 分量 HttpFoundation HeaderBag標頭

$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); 

這是修改sh頭文件的正確方法我應該做點什麼嗎?

有點新來Symfony,我想做的一切都是正確的方式。

+1

羅馬的很多方法,如果你想爲所有的請求/響應的頭,你的解決方案可能是好的,如果它的工作 – 2014-09-11 13:09:50

+0

是的,它只是不知道我是否需要擴展任何東西或做一些奇特的時髦的方式。 – 2014-09-11 13:14:14

+2

你看過http緩存章節嗎? http://symfony.com/doc/current/book/http_cache.html。我想你可能會在那裏找到你的時髦方法。 – Cerad 2014-09-11 13:32:22

回答

1

您的解決方案將起作用,但這不是最佳實踐。 Symfony2的一個強大的功能是他基於事件kernel,更好的方式是在kernel.response事件中寫入一個Listener來更改標頭。此外,例如,以這種方式,你可以檢查你的路線。

可以找到HttpCache Listener的一個時髦實現,也可以看看他的服務definition

+0

我確實看過這個,非常感謝。 – 2014-09-12 08:24:23