CMS как маршрутизация с подстановочными знаками с Slim 3 - PullRequest
1 голос
/ 25 апреля 2019

Я работаю над (очень легким) CMS на Slim 3 для некоторых проектов, над которыми я работаю.Я борюсь с маршрутизацией.Может быть, кто-то здесь может подтолкнуть меня в правильном направлении.

Администратор может добавлять новые страницы веб-интерфейса в бэкэнд.При добавлении страница создает (автоматически) слаг.Есть пара страниц (например, страница указателя), которые нельзя удалить или отредактировать (сменить слаг)

Теперь я понятия не имею, как настроить маршрутизацию.

Примериз того, что я хочу:

www.example.com/
www.example.com/contact.html www.example.com/some-page.html

Мне удалось настроить маршрутный символ, но, чтобы сделать вещи более интересными, у меня есть также несколько маршрутов для бэкэнда:

www.example.com/backend/
www.example.com/backend/dashboard/
$app->get('/[{path:.*}]', function($request, $response, $path = null) { return $response->write($path ? 'subroute' : 'index'); });

$app->group('', function () {
    $this->get('/backend/dashboard.html', 'BackendDashboardController:index')->setName('backend');
});

Как только я их реализую, я получаю следующую ошибку:

Static route "/backend/dashboard.html" is shadowed by previously defined variable route "/(.*)" for method "GET"

Будем очень благодарны за каждую подсказку.

1 Ответ

1 голос
/ 26 апреля 2019

Должно работать, если вы создаете группу для пути "/ backend".

$app->group('/backend', function () {
    $this->get('/dashboard.html', 'BackendDashboardController:index')->setName('backend');
});

$app->get('/[{path:.*}]', function($request, $response, $path = null) { return $response->write($path ? 'subroute' : 'index'); });
...