使用 PHP 的 Slim Framework 获取 post 数据

Getting post data using Slim Framework for PHP

目前正在为 PHP 使用 Slim Framework 研究 CRUD 方法,并使用 Postman 对其进行测试。我已经能够通过 Get 方法 select 全部或 select 单个对象,并且现在尝试插入一个对象,这就是我的问题开始的地方。我一直在关注 YT 视频 (https://www.youtube.com/watch?v=FYQrMr7oDv0 24:48) 只是为了了解一切,然而,youtuber 使用 $request->getParam('paramName') 这不是可用的方法大部头书。我试过使用 $request->getParsedBody() 和 $request->getBody(),但是所有这些 return 什么都没有。

下面是有问题的方法

$app->post('/users/add', function (Request $request, Response $response, array $args) {
    $data = $request->getParsedBody();
    $username = $data['username'];
    $passhash = $data['passhash'];
    $email = $data['email'];

    $sql = "INSERT INTO user (username, passhash, email) VALUE (:username, :passhash, :email)";

    try {
        $db = new DB();
        $conn = $db->connect();

        $stmt = $conn->prepare($sql);

        $stmt->bindParam(':username', $username);
        $stmt->bindParam(':passhash', $passhash);
        $stmt->bindParam(':email', $email);

        $result = $stmt->execute();

        $db = null;
        $response->getBody()->write(json_encode($result));
        return $response
            ->withHeader('content-type', 'application/json')
            ->withStatus(200);
    } catch (PDOException $e) {
        $error = array (
            "message" => $e->getMessage()
        );

        $response->getBody()->write(json_encode($error));
        return $response
            ->withHeader('content-type', 'application/json')
            ->withStatus(500);
    }
});

我应该如何获取数据,我正在尝试 post 使用 Postman,link 到下面的 Postman 图片 https://i.stack.imgur.com/4foNu.png

终于弄明白了,需要补充:

$app->addBodyParsingMiddleware();

创建应用后,为了能够解析JSON、表单数据和XML,需要添加这个中间件