Не удается войти в метод регистрации на slim index.php - PullRequest
0 голосов
/ 08 марта 2019

Я думаю, что сталкиваюсь с подобной проблемой.Я получаю сообщение об ошибке:

Вызов неопределенного метода Slim \ Router :: setCacheFile ()

Я звоню из Почтальона:

127.0.0.1:8080/php-slim/signup

Мой метод post в slim index.php определен следующим образом:

Попытка отправить данные из почтальона и загрузить их в localhost db, но, похоже, когда он достигает 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();

1 Ответ

0 голосов
/ 08 марта 2019

Непонятно, почему вы получаете эту ошибку, похоже, что вы не включаете / не загружаете зависимости 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'];

    ....

});
...