我正在开发一个使用slim-3的后端系统。在我有多个控制器,如果对于书籍和用户有两个不同的控制器,其中每个的所有调用都被放置。所以当我在index.php文件中声明控制器然后只一个控制器请求是接受其他控制器请求返回404页面未找到。当我删除一个控制器的声明然后其他工作。例如,当我在index.php中声明它们时,我有两个控制器,如用户控制器和提供者控制器,然后只有提供者控制器工作。但是当我删除提供者控制器的声明时,用户控制器api调用工作正常但是当我添加提供者时控制器然后用户控制器api调用返回404.这里是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;
$app->get('/hello/{name}', function (Request $request, Response $response,
array $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
require '../src/controllers/UserController.php';
require '../src/controllers/ProviderController.php';
require '../src/models/GeneralResponse.php';
require '../src/database/UserOperations.php';
require '../src/database/ProviderOperations.php';
require '../src/models/User.php';
require '../src/models/Provider.php';
require '../src/utils/Utils.php';
$app->run();
这是提供者控制器
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
$app = new \Slim\App;
$app->post('/provider/register',function($request,$response,$args){
try{
$appresponse=new GeneralResponse();
$formDataArry = $request->getParsedBody();
$email=$formDataArry['email'];
$passwordRaw=$formDataArry['password'];
$firstname=$formDataArry['firstname'];
});
这是用户控制器
<?php
require '../vendor/autoload.php';
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
$app = new \Slim\App;
//Registration of user end point
$app->post('/user/register',function($request,$response,$args){
try{
$appresponse=new GeneralResponse();
$formDataArry = $request->getParsedBody();
$email=$formDataArry['email'];
$passwordRaw=$formDataArry['password'];
});
基本上我在每个控制器中创建了单独的\ Slim \ App实例,这些实例覆盖了索引文件的实例,因此它忽略了每个控制器的要求,只需删除$ app = new \ Slim \ App;来自控制器文件,但index.php.Problem将由此修复。 For more information visit this