Как исключить маршрут '/ nova', если у меня есть маршрут 'any', соответствующий любому запросу - PullRequest
0 голосов
/ 05 февраля 2019

Собираюсь сделать собственную CMS на основе laravel nova.Сейчас я делаю функционал «Страницы».Я помещу свои страницы как строки таблицы pages, которая будет содержать столбец url.В конце моего routes/web.php файла у меня есть маршрут, который совпадает с любым маршрутом:

Route::get( .... );
Route::post( .... );
Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

В методе myRoute я поймаю URL и попытаюсь найти страницу с этим URL вбаза данных;Все работает нормально, но когда я набираю <domain_of_my_site>/nova для получения панели администратора, у меня 404. Из-за, маршруты nova включаются позже, чем мой маршрут для любого запроса.Итак, как это исправить?Как я могу поставить это

Route::get('/{page}', 'PageController@myRouter')->where('page', '[A-Za-z0-9_\-\/]+');

действительно в конце?

1 Ответ

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

У меня была похожая проблема с общими слагами в моем файле маршрутов.Мне удалось ограничить шаблон для слагов буквенно-цифровыми символами (включая тире, дефисы и косые черты *), но исключить маршруты Nova (nova-api и nova-vendor), а также путь Nova к панели администратора (nova).

Вот так выглядит файл routes/web.php:

Route::get('/{page}', 'PageController@myRouter');

И шаблон для {page} в RouteServiceProvider в файле app/Providers/RouteServiceProvider.php:

public function boot()
{
    Route::pattern('page', '^(?!nova|nova-api|nova-vendor).[a-zA-Z0-9-_\/]+$');

    parent::boot();
}

*) Обратите внимание, что этот шаблон также допускает слагов типа /page/one/two.

...