Slim PHP未返回正确的状态代码

Slim PHP未返回正确的状态代码,php,slim,Php,Slim,我正在创建我的第一个api,我选择使用Slim PHP,到目前为止,我认为它是一个非常好的轻量级框架,可以完成我需要的基础工作。我唯一真正遇到的问题是我的路线响应没有返回正确的状态代码。我想在成功登录时返回200,在使用错误凭据登录失败时返回403。我得到的是一个200,不管它返回什么。逻辑正在运行,因为我可以看到返回了正确的JSON,只是状态代码没有改变 Index.php <?php use \Psr\Http\Message\ServerRequestInterface a

我正在创建我的第一个api,我选择使用Slim PHP,到目前为止,我认为它是一个非常好的轻量级框架,可以完成我需要的基础工作。我唯一真正遇到的问题是我的路线响应没有返回正确的状态代码。我想在成功登录时返回200,在使用错误凭据登录失败时返回403。我得到的是一个200,不管它返回什么。逻辑正在运行,因为我可以看到返回了正确的JSON,只是状态代码没有改变

Index.php

 <?php
    use \Psr\Http\Message\ServerRequestInterface as Request;
    use \Psr\Http\Message\ResponseInterface as Response;

    require  'vendor/autoload.php';

    $app = new \Slim\App;

    $app->options('/{routes:.+}', function ($request, $response, $args) {
        return $response;
    });

    $app->add(function ($req, $res, $next) {
        $response = $next($req, $res);
        return $response
            ->withHeader('Access-Control-Allow-Origin', 'http://mysite')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With,    Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
    });

    require_once 'api/login.php';

    $app->run();

slim3使用的PSR-7响应是a,因此无法更改

F.ex

不会更改
$response
它返回更改后的响应,因此您必须返回此

return $response->withJson($data, 200);
或者,您需要使用新值重新分配变量,然后在route函数末尾返回它

$response = $response->withJson($data, 200);
// other code
return $response;
return $response->withJson($data, 200);
$response = $response->withJson($data, 200);
// other code
return $response;