php - 无法在 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().'}';
}
});
其中只有一个在工作。在这种情况下,我如何使用更多的一条路线
解决方案
尝试从“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);
推荐阅读
- python - MongoDB查找mongo数组中的所有项目是否不在python列表中
- ios - Swift - 不能用存储的属性“itemSize”覆盖
- python - 如何使用 $match 在 mongodb 中有效地执行连接
- java - 如何在黄瓜中为空字符串和非空字符串编写正则表达式
- html - Bootstrap 4 - 两列布局 - 一固定,一流动?
- javascript - Javascript数组解构
- awk - 在特定列中使用 awk 格式化 mac 地址
- javascript - JavaScript,fancybox 画廊
- javascript - 为什么我的点击事件不适用于脚本中的按钮?
- ffmpeg - 尝试使用 FFmpeg 在流式传输期间暂停视频