同一Slash路由之间的多个参数



im试图在同一斜杠之间传递两个参数,如果我使用一个参数,它可以正常工作,但2不起作用。

示例:路线:

Works:
Route::get('/jobpost-{title}','SomeController@show')->name('name.route');
Don't works:
Route::get('/jobpost-{title}-day-{day}','SomeController@showMore')->name('name.route.other');

我注意到,如果我在参数日之前添加斜线,效果很好,但我需要找到一种方法(除了创建一个slug列(,以便在同一路线中有两个参数。

这可能吗?

您可以更改路线的顺序:

Route::get('/jobpost-{title}-day-{day}','SomeController@showMore')
->name('name.route.other');
Route::get('/jobpost-{title}','SomeController@show')
->name('name.route');

或者,使用titleday:更改路线的签名

Route::get('/jobpost/{title}/day/{day}','SomeController@showMore')
->name('name.route.other');

我认为不可能在两个斜杠之间定义两个变量。你必须做一些正则表达式才能得到你想要的。像这样的东西:

Route::get('/jobpost-{complex}',function(Request $request, $complex){
$pattern = '/(.*)-day-(.*)/i';
preg_match($pattern, $complex, $matches);
$title = $matches[1];
$day = $matches[2];
return SomeController::showMore($request, $title, $day);
})->where('complex', '(.*)-day-(.*)');

更新:看起来你可以在两个斜线中有多个变量。

正如@Unflux所说,你必须优先改变路线顺序。

-

它的工作方式就像

你必须通过这种方式传递参数

Route::get('/user/{id}/{name}', function ($id, $name) {
return view('index',['name'=>$name,'id'=>$id]);
});

最新更新