【发布时间】: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::get 和Route::post 函数
【问题讨论】:
-
你为什么不用
Route::resource('customer.module.client');? -
我已经想到了那个解决方案,但我想为不同的客户端使用不同的控制器