Маркер URI маршрутизации при использовании префикса - PullRequest
0 голосов
/ 31 января 2019

Я успешно использовал подстановочный знак маршрута для моего корневого пути (/), пока не решил переместить мои файлы внешнего интерфейса за префиксом (/ crm).После этого я получаю 404 и не знаю, как это решить.Мне нужен подстановочный знак для всех моих маршрутов внешнего интерфейса Javascript (/ crm / orders / details / 12345), которые в противном случае приводят к 404.

Поэтому, когда я удаляю префикс ('crm') все как настроено с кодом ниже работает нормально.Или когда я удаляю {любой} плюс соответствующее регулярное выражение, он работает частично, на маршрутах одного уровня ( / crm работает, но / crm / orders делаетнет).

Но когда у меня есть префикс и подстановочный знак, / crm дает мне 404.

Как мне это настроить?

Работает

Поставщики / RouteServiceProvider.php:

Route::namespace('App\Http\Controllers')
  ->group(base_path('routes/crm.php'));

routs / crm.php

Route::get('/{any}', function ()
{
    return view('crm');
})->where('any', '.*');

Не работает

Поставщики / RouteServiceProvider.php:

Route::prefix('crm')
  ->namespace('App\Http\Controllers')
  ->group(base_path('routes/crm.php'));

routs / crm.php

Route::get('/{any}', function ()
{
    return view('crm');
})->where('any', '.*');

Вывод php artisan route: список выглядит следующим образом

| Domain | Method | URI |Name | Action | Middleware  |
*snap*
| | GET|HEAD | crm/{any} | | Closure | |
*snap*

1 Ответ

0 голосов
/ 31 января 2019

Вам необходимо настроить {any} в качестве необязательного параметра.В вашем конкретном случае маршрут будет перехватывать только crm/something маршрутов (где что-то может состоять из одного или нескольких сегментов).

Route::prefix('crm')->group(function () {
    Route::get('/{any?}', function () {
        dd("I am here");
    })->where('any', '.*');
});

Однако, если вы добавите {any} в качестве необязательного, он также будет ловить /crm.Это то, что вы ищите?

...