0

当使用Crud 插件Crud.Api监听器修补记录时,成功的 PATCH200 OK在响应中返回一个空数据数组。

{
    "success": true,
    "data": []
}

当 PATCH 后验证失败时,将422 Unprocessable Entity返回具有以下响应的 a:

{
    "message": "A validation error occurred",
    "url": "\/admin\/users\/edit\/4.json",
    "code": 422,
    "file": "\/app\/vendor\/friendsofcake\/crud\/src\/Listener\/ApiListener.php",
    "line": 189
}

但我期待的是:

{
    "success": false,
    "data": [
       "errors": [...]
    ]
    
}

https://crud.readthedocs.io/en/latest/listeners/api.html#http-put-edit

如果成功为假,则将返回 422 的 HTTP 响应代码,以及响应正文的 data 属性中来自模型的验证错误列表。

插件是否需要配置为返回错误?

4

1 回答 1

3

我对 Crud 插件并不太熟悉,但该响应看起来像默认的 CakePHP 异常渲染器响应,所以我猜你可能还没有配置你的应用程序使用 Crud 异常渲染器:

配置/app.php

'Error' => [
    'exceptionRenderer' => \Crud\Error\ExceptionRenderer::class,
    // ...
],

从文档中引用:

注意:但是,如果您使用的是 CakePHP 3.3+ 的 PSR7 中间件功能,则不会使用 exceptionRenderer 配置,而是必须将 config/app.php 中的 Error.exceptionRenderer 配置设置为 'Crud\Error\ExceptionRenderer'下列的

请参阅Crud Docs > Listeners > API > Exception handler

于 2019-04-21T20:16:53.817 回答