【发布时间】:2017-03-20 18:03:00
【问题描述】:
目前,对于我在 RESTFUL Zend Framework 3 中的 GET 端点,如果我无法通过参数找到用户请求的项目,我会使用 JSON API errors 发送 400,如下所示:
$this->response->setStatusCode(Response::STATUS_CODE_400);
return JsonModel([
'errors' => [
[ 'title' => 'Not found' ]
]
]);
当然,正确的状态是 404。但是,一旦我设置$this->response->setStatusCode(Response::STATUS_CODE_404);,就会显示默认的 404 路由。如何禁用它?
我尝试在 module.config.php 中注释掉以下内容
. . .
'view_manager' => [
// 'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
// 'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'strategies' => [
'ViewJsonStrategy',
],
. . .
],
这行得通,除了我有两个问题:
- 我想要一些端点的 404 路由
-
它将信息添加到我不想发送的返回 JSON 中
{ “错误”:[ { "title": "未找到", } ], "message": "找不到页面。", “显示异常”:真, "控制器": "公司\模块\控制器\RestfulController", “控制器类”:空 }
我有什么选择?
【问题讨论】:
-
您应该简单地更新 not_found_template 键以匹配您想要的模板。
-
Unex,但我想返回一个 JSON 模型,其中包含我在 JSON 模型对象中预填充的错误。我可以用视图做 JSON 吗?
-
如果你制作了一个自定义的 404 页面,你可以用它做任何你想做的事情。
标签: zend-framework-mvc zend-framework3