如何从laravel中的请求url设置路由参数默认值

Wis*_*amx 1 routing laravel laravel-5 routeparams

我有这个路由设置:

Route::prefix('admin/{storeId}')->group(function ($storeId) {
  Route::get('/', 'DashboardController@index');
  Route::get('/products', 'ProductsController@index');
  Route::get('/orders', 'OrdersController@index');
});
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用“操作”助手生成 url,则不必明确提供 storeId。

{{ action('DashboardController@index') }}
Run Code Online (Sandbox Code Playgroud)

如果提供,我希望从请求 URL 自动设置 storeId。

也许是这样的。

Route::prefix('admin/{storeId}')->group(function ($storeId) {
  Route::get('/', 'DashboardController@index');
  Route::get('/products', 'ProductsController@index');
  Route::get('/orders', 'OrdersController@index');
})->defaults('storeId', $request->storeId);
Run Code Online (Sandbox Code Playgroud)

lag*_*box 5

文档提到了关于route帮助程序的默认参数(应该与所有生成 url 的帮助程序一起使用):

“因此,您可以使用该URL::defaults方法为该参数定义一个默认值,该值将始终在当前请求期间应用。您可能希望从路由中间件调用此方法,以便您可以访问当前请求”

“一旦设置了 ... 参数的默认值,您就不再需要在通过route帮助程序生成 URL 时传递其值。”

Laravel 5.6 文档 - 网址生成 - 默认值