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

时间:2018-05-28 15:08:54

标签: laravel laravel-5 routing routeparams

我有这个路由设置:

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

所以如果我使用'action'帮助器生成一个url,那么我不必明确地提供storeId。

{{ action('DashboardController@index') }}

我希望storeId自请求URL自动设置。

也许是这样的。

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);

2 个答案:

答案 0 :(得分:3)

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

  

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

     

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

Laravel 5.6 Docs - Url Generation - Default Values

答案 1 :(得分:0)

Laravel完全按照你描述的方式工作。

您可以在控制器方法中访问storeId

class DashboardController extends Controller {
    public function index($storeId) {
        dd($storeId);
    }
}

http://localhost/admin/20将打印" 20"