我试图使用Zend_Controller_Plugin_ErrorHandler来处理404错误案例。根据 文档例如,插件有常量,可以用来匹配Exception类型并进行相应的处理。
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
有谁知道如何专门创建这些类型的异常?
你可以这样做。
$this->getResponse()->setHttpResponseCode(404);
或者...
throw new Zend_Controller_Action_Exception('This page does not exist', 404);
你可以这样做。
$this->getResponse()->setStatusCode(404);
return;
当我在谷歌上搜索时,我总是在这里登陆,所以Zend Framework 2,Zend Framework 3和Laminas的答案是(如果你使用的是MVC模块)。
$this->response->setStatusCode(404);
return $this->response;
你必须 return
里边的动作和 确保你返回响应对象! 否则有可能会暴露更多的数据,而不是你想要的!
如果你使用的是 诗篇 并得到一个错误,因为 {Laminas|Zend}\Stdlib\ResponseInterface
不知道 setStatusCode()
你必须在之前做一个类型检查。
use Zend\Http\Response as HttpResponse;
// ...
if ($this->response instanceof HttpResponse) {
$this->response->setStatusCode(404);
}
return $this->response;
当你想在Zend Expressive或Laminas Mezzio中做404的时候。那么请参考文件.