在Laravel 5中使用其他URL参数嵌套资源控制器

时间:2015-10-06 13:12:04

标签: laravel routes

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

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

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

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

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()功能的选项吗?或者我可以在路由资源中创建一个组吗?或者我应该用Route::get

写出所有不同的Route::post$options = ['uses' => '...', 'as' => 'customers.module1.clients.*']函数

1 个答案:

答案 0 :(得分:3)

您可以声明以下两条路线:

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

然后你的路线就是这样: enter image description here