【问题标题】:Nesting resource controllers with additional URL params in Laravel 5在 Laravel 5 中使用额外的 URL 参数嵌套资源控制器
【发布时间】:2016-01-03 10:15:56
【问题描述】:

我正在尝试为 Laravel 5 中的嵌套资源控制器创建路由,例如..

/customers/{customer}/modulename/clients/{client}

在我正在开发的应用程序中,我有正在登录应用程序的客户,还有系统管理员。每个客户都可以选择多个模块来使用,在这些模块中有时会有相同的模型,但他们使用不同的控制器。

我使用了以下解决方案,但它们存在一些问题。

Route::resource('customers', 'CustomerController');
Route::resource('customers.clients', 'CustomerController');

我无法在这个解决方案中选择不同的模块,所以我尝试分组...

Route::group(['prefix' => 'customers/{customer}', ''], function(){
  Route::group(['prefix' => 'module1', ''], function(){
    Route::resource('clients', 'Module1\ClientAController');
  });
  Route::group(['prefix' => 'module2', ''], function(){
    Route::resource('clients', 'Module2\ClientBController');
  });
});
Route::resource('customers', 'CustomerController');

但是路线越来越烦人了。在构建菜单层次结构时,很难创建以下路径。

route('customers.{customer}.module1.clients.index');

应该是这样,但我想去……

route('customers.module1.clients.index');

我缺少Route::group() 函数的选项,或者我可以在路由资源中创建一个组吗?或者我应该用$options = ['uses' => '...', 'as' => 'customers.module1.clients.*'] 写出所有不同的Route::getRoute::post 函数

【问题讨论】:

  • 你为什么不用Route::resource('customer.module.client');
  • 我已经想到了那个解决方案,但我想为不同的客户端使用不同的控制器

标签: laravel routes


【解决方案1】:

你可以声明以下两条路由:

Route::resource('customer','CustomerController');
Route::resource('customer.module.client','ClientController');

那么您的路线将是这样的:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多