首页 > 解决方案 > 无法在 slim3 php 中创建新路由

问题描述

我正在尝试 slim3 PHP mico 框架的示例。我有两条路线需要包含在index.php第一个成功添加中,当我尝试添加第二条时,在添加第二条后我在这里遇到了一个问题,它们都不起作用,请参阅下面的代码。

index.php

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

require 'vendor/autoload.php';
require 'src/config/db.php';

$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response) {
    $name = $request->getAttribute('name');
    $response->getBody()->write("Hello, $name");

    return $response;
});

// Customer Routes
require 'src/routes/customers.php';
require 'src/routes/resto.php';

$app->run();

和customers.php

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
date_default_timezone_set("Asia/Kolkata");

$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', '*')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
});


// Get All Customers
$app->get('/customers/login/{userid}/{password}', function(Request $request, Response $response){

    $userid = $request->getAttribute('userid');
    $password = $request->getAttribute('password');

    $sql = "SELECT * FROM user WHERE userid = :userid AND password = :password";

    try{
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();

        $stmt = $db->prepare($sql);
        $stmt->bindParam(':userid', $userid);
        $stmt->bindParam(':password', $password);
        $stmt->execute();

        $customers = $stmt->fetch(PDO::FETCH_ASSOC);

        if($stmt->rowCount()>0){
            $data['success']= "true";
            $data['name'] = $customers['name'];
            $data['userid'] = $customers['userid'];

        }else{

            $data['success']= "false";
        }

        $db = null;

        //echo $userid."-".$password;
        echo json_encode($data);

    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    }
});

和我的 resto.php

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
date_default_timezone_set("Asia/Kolkata");

$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', '*')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
});

//get Menu
$app->get('/resto/menu/{restoid}', function(Request $request, Response $response){
    $restoid = $request->getAttribute('restoid');

        if($restoid == 1){
            $menu = 'sairammenu';
        }else if($restoid == 2){
            $menu = 'newsatyammenu';
        }else if($restoid == 3){
            $menu = 'srivyafoodscmr';
        }else if($restoid == 4){
            $menu = 'satyammenu';
        }else if($restoid == 5){
            $menu = 'sairamrtc24x7';
        }else if($restoid == 6){
            $menu = 'lily';
        }

    $menusql = "SELECT * FROM $menu";

    try{
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();

        $menu = $db->query($menusql);
        $menulist=$menu->fetchall(PDO::FETCH_OBJ);

        $db = null;

        echo json_encode($menulist);
    } catch(PDOException $e){
        echo '{"error": {"text": '.$e->getMessage().'}';
    }
});

其中只有一个在工作。在这种情况下,我如何使用更多的一条路线

标签: phpslim-3

解决方案


尝试从“customers.php 和 resto.php”中删除“$app = new \Slim\App;”

在 index.php 中使用此代码

// Create and configure Slim app
$config = ['settings' => [
    'displayErrorDetails' => true, // true for development or false for Production
    'addContentLengthHeader' => false,
]];
$app = new \Slim\App($config);

推荐阅读