1

我有这个路由设置:

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

因此,如果我使用“操作”帮助程序生成 url,那么我不必明确提供 storeId。

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

如果提供,我希望从请求 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);
4

2 回答 2

5

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

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

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

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

于 2018-05-28T20:16:20.333 回答
-2

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

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

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

http://localhost/admin/20将打印“20”

于 2018-05-28T15:31:00.900 回答