使用 json 的值作为 slim 的错误代码

Using json's value as slim's error code

现在我有这个:

$error = new Error($id, $from, $to);
return $response
    ->withStatus(422)
    ->withHeader('Content-Type', 'text/html')
    ->write($error->error());

Errorclassreturns这个:

{"error":true,"code":422,"text":"Blah!"}

如何在 ->withStatus(422) 中设置错误代码,使其由 json 字符串而不是我手动设置?

编辑:我想这可行:

$code = json_decode($error->error(), true);
$code = $code['code'];
/* ...blah blah code... */
->withStatus($code)

但是我想知道是否有一种方法可以用更少的代码来做到这一点。

更新 Error class,使其具有 code() public 方法,return 只是 422。您现在可以:

$error = new Error($id, $from, $to);
return $response
    ->withStatus($error->code())
    ->withHeader('Content-Type', 'application/json')
    ->write($error->error());

顺便说一下,当您使用 JSON 时,如果您将 error() return 设为一个数组,您可以这样做:

$error = new Error($id, $from, $to);
return $response->withJson($error->error(), $error->code());