Определение маршрута в Ларавеле - PullRequest
3 голосов
/ 09 июля 2019

У меня здесь "странная" ситуация.Мне нужно обрабатывать следующие маршруты таким же образом:

domain.com/common/p1
domain.com/common/p1/p2
domain.com/common/p1/p2/p3

Что означает, в принципе, маршрут должен быть примерно таким:

Route::get('common/{path}', function ($path) {
    //should execute for all paths after common
});

Есть ли какое-либо регулярное выражение, которое я могу использовать?

Ответы [ 5 ]

2 голосов
/ 09 июля 2019

Подробнее: https://laravel.com/docs/5.8/routing

Вы можете использовать:

Route::get('common/{path}', function ($path) {
    //should execute for all paths after common
})->where('path', '(.*)');

Надеюсь, это поможет вам.

1 голос
/ 09 июля 2019

Компонент маршрутизации Laravel позволяет использовать все символы, кроме /.Вы должны явно разрешить / быть частью вашего заполнителя, используя регулярное выражение условия where:

Route::get('common/{path}', function ($path) {
    //should execute for all paths after common
})->where('path', '.*');
1 голос
/ 09 июля 2019

Вы ищете необязательные параметры .

Ваш код будет выглядеть примерно так:

Route::get('common/{path1?}/{path2?}/{path3?}', function ($path1=null, $path2=null, $path3=null) {
    //
});

Для неограниченных параметров используйте:

Route::get('common/{path?}', 'Controller@Method')->where('path', '.*');

Это приведет к массиву путей в вашем методе контроллера.

0 голосов
/ 09 июля 2019

Я думаю, что вы можете достичь этого, используя приведенный ниже код.

Route::any('/common/{args?}', function($args){
   $args = explode('/', $args);
   // do your code by passing argument to controller
})->where('args', '(.*)');
0 голосов
/ 09 июля 2019

да, вы можете ..

Route::get('common/{path}', function ($path) {
//should execute for all paths after common
})->where('path', 'YOUR REGEX GOES HERE');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...