Php 如何在Zend框架中抛出404异常
我正在尝试使用Zend_Controller_Plugin_ErrorHandler来处理我的错误404案例。 根据,插件有常量,可以用来匹配异常类型并相应地处理它们。e、 gPhp 如何在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_
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