Как разделить разные маршруты в разных каталогах с помощью Slim Framwork - PullRequest
0 голосов
/ 16 февраля 2019

У меня проблемы с настройкой маршрутов в моем приложении в разных каталогах.Приложение загружает только один из файлов маршрутов.

Структура файла

 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();

customer.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

1 Ответ

0 голосов
/ 18 февраля 2019

Вы создаете новый экземпляр $app в каждом файле маршрута, который переопределяет экземпляр в вашем файле index.php.

Попробуйте удалить экземпляры $app из файлов маршрута, чтобы устранить проблему:

customer.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';
});
...