SlimFramework php v3,withStatus(500)不起作用

时间:2017-06-30 11:28:33

标签: php slim-3

我开始学习PHP Slim-Framework v3。但我很少发现这很困难。

这是我的代码:

$app = new \Slim\App(["settings" => $config]);
$app->get('/', function(Request $request, Response $response, $args = []) {
    $error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
    $response->withStatus(500)->getBody()->write(json_encode($error));
});

现在,当我遇到服务问题时,我想以状态500回复用户。但不幸的是,这不起作用。虽然我收到了回复,但它返回200状态而不是500状态。

我做错了什么或者我错过了什么?

我试过调查其他问题,但我找不到任何帮助我的事情。

1 个答案:

答案 0 :(得分:3)

Response - 对象是不可变的,因此无法更改。方法with*()确实返回Response - 对象的副本,其中包含更改的值。

$app->get('/', function(Request $request, Response $response, $args = []) {
    $error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
    $response->write(json_encode($error)); // helper method for ->getBody()->write($val)
    return $response->withStatus(500);
});

请参阅this answer为什么您不需要重新分配write上的值。

您也可以使用withJson代替:

$app->get('/', function(Request $request, Response $response, $args = []) {
    $error = array('result' => false, 'message' => 'Bad Request', 'dev'=>'', 'data' => []);
    return $response->withJson($error, 500);
});