Получал 404 на каждый запрос при работе с двумя контроллерами

Я разрабатываю серверную систему с использованием slim 3. В приложении у меня есть несколько контроллеров, например, если для книг и пользователей есть два разных контроллера, в которых размещаются все вызовы каждого из них.Поэтому, когда я объявляю контроллеры в файле index.php, тогда только один запрос контроллера принимает запрос другого контроллера, страница 404 возврата не найдена. Когда я удаляю объявление одного контроллера, другой работает. например, у меня есть два контроллера, такие как User Controller и Provider Controller, когда я объявляю их оба в index.php, тогда работает только Provider Controller. Но когда я удаляю объявление Provider Controller, тогда вызовы 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'];
    });


person Asad Yasin    schedule 01.01.2019    source источник
comment
Ваш пример кода включает только одно определение маршрута, которое не имеет ничего общего с вашими контроллерами. Обновите свой код и добавьте маршруты, которые, по вашему мнению, возвращают ошибку 404.   -  person Nima    schedule 01.01.2019
comment
Это файл index.php, остальные маршруты находятся в файле User Controller и Provider Controller.   -  person Asad Yasin    schedule 01.01.2019
comment
Пожалуйста, дайте нам знать о них.   -  person Nima    schedule 01.01.2019
comment
Когда я удаляю и пользователя контроллера, и поставщика, тогда работают только маршруты контроллера поставщика, а маршруты контроллера пользователя возвращают 404, но когда я удаляю поставщика, маршруты контроллера пользователя работают.   -  person Asad Yasin    schedule 01.01.2019
comment
Ваш код не показывает, как вы declare эти контроллеры и маршруты. Нам нужно увидеть их, чтобы они могли помочь.   -  person Nima    schedule 01.01.2019
comment
вот код других контроллеров   -  person Asad Yasin    schedule 01.01.2019


Ответы (1)


В основном я создал отдельный экземпляр \ Slim \ App в каждом контроллере, этот экземпляр перезаписывает экземпляр индексного файла, поэтому он игнорировал требование каждого контроллера, просто удалите $ app = new \ Slim \ App; из файла контроллеров, но index.php. Этим проблема будет устранена. Для получения дополнительной информации посетите этот

person Asad Yasin    schedule 01.01.2019