我在我的应用程序中在不同目录中设置路由时遇到一些问题。该应用程序仅加载其中一个路径文件。
文件结构
myapp
|_public
| |_vendor
| |_index.php
|_src
|_routes
|_books.php
|_customers.php
的index.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require './vendor/autoload.php';
$app = new \Slim\App;
// Routes
require '../src/routes/books.php';
require '../src/routes/customers.php';
$app->run();
customers.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
$app = new \Slim\App;
$app->get('/api/customers', function(Request $request, Response $response){
echo 'Customers';
});
books.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
$app = new \Slim\App;
$app->get('/api/books', function(Request $request, Response $response){
echo 'Books';
});
因此,使用上述结构,根据文件结构中的顺序,仅加载路径文件中的一个。书籍路线或客户路线和订单将返回页面未找到错误。
我不明白.T
您正在每个路由文件中创建一个新的$app
实例,该实例将覆盖index.php
文件中的实例。
尝试从路由文件中删除$app
实例以解决此问题:
customers.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
// $app = new \Slim\App; <-- remove this line
$app->get('/api/customers', function(Request $request, Response $response){
echo 'Customers';
});
books.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
// $app = new \Slim\App; <-- remove this line
$app->get('/api/books', function(Request $request, Response $response){
echo 'Books';
});