在两个控制器上工作时,每个请求都得到404

时间:2019-01-01 13:58:14

标签: php slim slim-3

我正在使用slim-3开发后端系统。在应用程序中,我有多个控制器,例如对于Books和Users,有两个不同的控制器放置了每个控制器的所有调用,因此当我在index.php中声明控制器时文件,然后只有一个控制器请求被接受,其他控制器请求返回404页未找到。当我删除一个控制器的声明时,其他控制器起作用。 例如,当我在index.php中声明它们时,我有两个控制器,例如User Controller和Provider Controller,那么只有Provider Controller可以工作。但是当我删除Provider Controller的声明时,User Controllers api调用运行良好,但是当我添加Provider时然后,控制器进行用户控制器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'];
    });

1 个答案:

答案 0 :(得分:1)

基本上,我在每个控制器中创建了\ Slim \ App的单独实例,这些实例将覆盖索引文件的实例,因此它忽略了每个控制器的要求,只需删除$ app = new \ Slim \ App;即可。从控制器文件,但index.php.Problem将由此修复。 For more information visit this