📅  最后修改于: 2023-12-03 15:17:11.728000             🧑  作者: Mango
在 Laravel 8 中,可以使用可选参数路由到控制器,使得在定义路由时不必显式指定所有参数。这个功能在一些应用场景中非常实用,如可选搜索条件,可选过滤器等等。
首先,在路由定义中,我们可以在需要传递可选参数的地方加上?
,表示该参数是可选的。例如:
Route::get('/search/{keyword?}', '\App\Http\Controllers\SearchController@search');
上面代码中,{keyword?}
表示keyword
是一个可选的参数,可以在调用时不传递。
在控制器中,我们可以为可选参数指定默认值,使用如下方式:
public function search($keyword = 'default')
{
// ...
}
控制器中的$keyword
参数将会使用在路由定义中指定的默认值,如果在路由中传递了参数,将会自动覆盖默认值。
Route::get('/search/{keyword?}', '\App\Http\Controllers\SearchController@search');
public function search($keyword = 'default')
{
// Do something with $keyword...
}
以上示例中,我们定义了一个/search
的路由,该路由有一个可选参数{keyword?}
,在调用时可以不传递该参数,默认值为default
。在控制器中的search
方法中,我们使用了$keyword
参数,可以自动接收可选参数的值。
使用可选参数路由到控制器是一个非常实用的功能,在一些场景中减少了代码冗余,提升了开发效率。在 Laravel 8 中,我们可以使用上述方式轻松地实现该功能。