Получил 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'];
});
1 ответ
По сути, я создал отдельный экземпляр \Slim\App в каждом контроллере, который перезаписывает экземпляр индексного файла, поэтому он игнорировал требования каждого контроллера, просто удалите $app = new \Slim\App; из файла контроллеров, но при этом index.php.Problem будет исправлено. Для получения дополнительной информации посетите этот