检查路由参数是否为特定值?
Checking route parameters are a specific value?
我的路线:
Route::get('/{type?}/{filter?}', [IndexController::class, 'index']);
有没有一种方法,比如表单请求,我可以在其中检查 $type
和 $filter
是否为特定值,例如 $filter
等于 new
或也许 trending
?
我考虑过将有限数量的选项指定为路由本身:
Route::get('/books/new', [IndexController::class, 'index']);
但是我无法在控制器中获取这些参数。请注意,我不希望每个 $type
.
都有单独的控制器
您可以将路由参数限制为正则表达式,如in the documentation所述。
Route::get('/{type?}/{filter?}', [IndexController::class, 'index'])
->where(['filter' => '^(new|trending)$']);
但我认为将此逻辑集中在您的控制器中更有意义:
public function index(string $type, string $filter)
{
switch ($type) {
case "books":
// do something
break;
case "films":
// do something
break;
default:
abort(404);
}
}
我的路线:
Route::get('/{type?}/{filter?}', [IndexController::class, 'index']);
有没有一种方法,比如表单请求,我可以在其中检查 $type
和 $filter
是否为特定值,例如 $filter
等于 new
或也许 trending
?
我考虑过将有限数量的选项指定为路由本身:
Route::get('/books/new', [IndexController::class, 'index']);
但是我无法在控制器中获取这些参数。请注意,我不希望每个 $type
.
您可以将路由参数限制为正则表达式,如in the documentation所述。
Route::get('/{type?}/{filter?}', [IndexController::class, 'index'])
->where(['filter' => '^(new|trending)$']);
但我认为将此逻辑集中在您的控制器中更有意义:
public function index(string $type, string $filter)
{
switch ($type) {
case "books":
// do something
break;
case "films":
// do something
break;
default:
abort(404);
}
}