Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Zend框架中抛出404异常_Php_Zend Framework - Fatal编程技术网

Php 如何在Zend框架中抛出404异常

Php 如何在Zend框架中抛出404异常,php,zend-framework,Php,Zend Framework,我正在尝试使用Zend_Controller_Plugin_ErrorHandler来处理我的错误404案例。 根据,插件有常量,可以用来匹配异常类型并相应地处理它们。e、 g switch ($errors->type) { case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE: case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_

我正在尝试使用Zend_Controller_Plugin_ErrorHandler来处理我的错误404案例。 根据,插件有常量,可以用来匹配异常类型并相应地处理它们。e、 g

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);
$this->getResponse()->setHttpResponseCode(404);
return;


您可以这样做:

 $this->getResponse()->setHttpResponseCode(404);
$this->getResponse()->setHttpResponseCode(404);
return;

我在谷歌搜索时总是在这里登陆,所以Zend Framework 2、Zend Framework 3以及Laminas的答案是(如果您使用的是MVC模块):

您必须
返回操作内部的
,并确保返回响应对象!否则,您可能会公开比您想要的更多的数据

如果您正在使用并且出现错误,因为
{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或Lamas Mezzio中执行404时。

对于Zend 2,我认为正确的方法是设置HttpResponseCode而不是设置StatusCode