如何在ZF2中使用自定义(非标准)HTTP状态代码

时间:2014-11-25 14:30:38

标签: http zend-framework2 httpresponse

我正在尝试使用Zend Framework 2应用程序中的自定义http状态代码498 - Token Invalid发送响应。这显然不起作用,因为标准Zend Response类不允许自定义http代码。

所以我创建了自己的响应类来处理这个http代码并在我的动作中返回它:

$response = new CustomResponse();
$response->setStatusCode(498); //basic zend response objects throws InvalidArgumentException

return $response;

虽然没有抛出任何异常,但浏览器说它返回了500错误。

如何使这个工作?

1 个答案:

答案 0 :(得分:4)

ZF2中的HTTP Response类严格遵循状态码的RFC 2616。这是一种很好的做法,当您传递未知状态代码时,setStatusCode()方法会抛出异常。

无论如何,您不需要创建自定义响应对象来返回非标准HTTP状态代码。此要求存在setCustomStatusCode()方法。

在任何控制器操作中尝试此操作:

public function myAction()
{
   $response = $this->getResponse();
   $response->setCustomStatusCode(498);
   $response->setReasonPhrase('Invalid token!');
   return $response;
}