如何在ZF2中为各个控制器操作设置自定义标头?

时间:2015-01-13 11:38:37

标签: php zend-framework2

我想永远不要在zend框架2中对我的一些控制器操作做出响应。

这是我所说的控制器的定义:

'login' => array(
    'type' => 'segment',
    'options' => array(
        'route'    => '/login[/:action][/:id]',
        'constraints' => array(
            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
            'id' => '[a-zA-Z0-9]*',
        ),
        'defaults' => array(
            'controller' => 'Presentation\Controller\Login',
            'action'     => 'index',
        ),
    ),
),

我不希望缓存此控制器提供的任何响应。我试过像这样的setHeader:

$this->getResponse()
    ->setHeader('Cache-Control', 'no-cache, no-store, must-revalidate', true)
    ->setHeader('Pragma', 'no-cache', true)
    ->setHeader('Expires', '0', true);

在动作功能中,它不起作用。我还在布局.pthml

上设置了正确的标题

1 个答案:

答案 0 :(得分:4)

你是正确的方式。您只需通过相关操作中的$this->getResponse()->getHeaders()实际Zend\Http\Headers实例。

试试这个:

public function myAction()
{
    $headers = array(
        'Cache-Control' => 'no-cache, no-store, must-revalidate',
        'Pragma'        => 'no-cache',
        'Expires'       => false,
        );
    $this->getResponse()->getHeaders()->addHeaders($headers);
}