无法在 slim index.php 上进入注册方法

Not able to go into signup method on slim index.php

我想我 运行 遇到了类似的问题。我收到错误:

Call to undefined method Slim\Router::setCacheFile()

我是从邮递员那里打电话的:

127.0.0.1:8080/php-slim/signup

我在 slim index.php 中的 post 方法定义为:

尝试从 postman 发送数据,并将其上传到本地主机数据库,但似乎一旦到达 index.php,它就永远不会进入函数。

期待您的帮助

这是 index.php

上的代码
 <?php
    ob_start("ob_gzhandler");
    require 'C:\xampp\htdocs\php-slim\vendor\autoload.php';
    require 'config.php';
    require 'Slim/Slim.php';
    \Slim\Slim::registerAutoloader();
    $app = new \Slim\App();

    $app->post("/signup", function() {

        $request = \slim\Slim::getInstance()->request();
        $data = json_decode($request->getBody());

        $fname=$data->fname;
        $lname=$data->lname;
        $username=$data->username;
        $password=$data->password;

        try {   
                $db = getDB();

                /*Inserting user values*/
                $sql1="INSERT INTO users(username,password,fname,lname)VALUES(:username,:password,:fname,:lname)";
                $stmt1 = $db->prepare($sql1);
                $stmt1->bindParam("username", $username,PDO::PARAM_STR);
                $stmt1->bindParam("password", $password,PDO::PARAM_STR);
                $stmt1->bindParam("fname", $fname,PDO::PARAM_STR);
                $stmt1->bindParam("lname", $lname,PDO::PARAM_STR);

                $db = null;

                if($userData){
                   $userData = json_encode($userData);
                    echo '{"userData": ' .$userData. '}';
                } else {
                   echo '{"error":{"text":"Enter valid data"}}';
                }
        }
        catch(PDOException $e) {
           echo '{"error":{"text":'. $e->getMessage() .'}}';
        }
    });     
    $app->run();

不太清楚您为什么会收到该错误,看起来您不是 including/loading Slim 依赖项。

我不知道您使用的是哪个版本的 Slim,但请确保您还加载了所有必需的包。您可以从 https://packagist.org/packages/slim/slim 获取您的特定版本。使用 composer 很好,因为它会为您管理这些。

pimple/pimple: ^3.0
psr/http-message: ^1.0
nikic/fast-route: ^1.0
container-interop/container-interop: ^1.2
psr/container: ^1.0

一切就绪后,尝试将您的代码更改为:

// I believe you need this object to use the request method
use Psr\Http\Message\ServerRequestInterface as Request;

$app = new \Slim\App();

$app->post("/signup", function(Request $request) {

    // not needed
    // $request = \slim\Slim::getInstance()->request();

    // no need to decode the request body, it's not json format
    // $data = json_decode($request->getBody());

    // do it this way instead. Will be array not object I believe
    $data = $request->getParsedBody();

    $fname = $data['fname'];

    ....

});