ZF2 - 如何正确设置标题?

时间:2014-06-14 08:42:43

标签: php zend-framework2 http-headers

我在ZF2中设置标题时遇到问题。我的代码如下所示:

public function xmlAction()
{
    $headers = new \Zend\Http\Headers();
    $headers->clearHeaders();
    $headers->addHeaderLine('Content-type', 'application/xml');

    echo $file; // xml file content
    exit;
}

但标题仍然是text / html。我可以设置正确的标题:

header("Content-type: application/xml");

但我想用Zend Framework做到这一点。为什么上面的代码不起作用?

2 个答案:

答案 0 :(得分:15)

您正在做的是在ZF2 Response对象中设置标头,但此响应稍后会在从未使用过。您正在回显文件然后退出,因此ZF2无法发送响应(带有标题)。

必须使用响应来发送文件,你可以这样做:

public function xmlAction()
{
    $response = $this->getResponse();
    $response->getHeaders()->addHeaderLine('Content-Type', 'application/xml');
    $response->setContent($file);

    return $response;
}

从控制器方法返回响应的想法被称为"短路"并且是explained in the manual

答案 1 :(得分:0)

尝试 -

public function xmlAction()
{
    $this->getResponse()->getHeaders()->addHeaders(array('Content-type' => 'application/xml'));

    echo $file; // xml file content
    exit;
}