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

问题描述 投票:0回答:1

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

调用未定义的方法Slim \ Router :: setCacheFile()

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

127.0.0.1:8080/php-slim/signup

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

试图从邮递员发送数据,并将其上传到localhost数据库,但似乎一旦它到达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();
php json postman slim
1个回答
0
投票

有些不清楚为什么你会收到这个错误,看起来你没有包含/加载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'];

    ....

});
© www.soinside.com 2019 - 2024. All rights reserved.