Laravel 控制器委派
Laravel Controller Delegation
努力让我的 Laravel 项目在这里井井有条,同时让它成长。
目前我使用:
Route::controller('/admin', 'AdminController');
...为了让控制器为一般管理页面提供服务。这工作正常,但是出于清洁原因,我想将特定的子查询委托给其他控制器。
例如,我希望 /admin/dashboard 解析为 AdminController@getDashboard。我还希望 /admin/gallery/ 解析为 AdminGalleryController@getIndex 和 /admin/foo/bar 解析为 AdminFooController@getBar.
有没有简单的方法可以像这样慢慢扩展功能?
我们已经迁移到 Laravel 5 和 5.1,这仍然是做事的好方法。如果您没有在 Laravel 中使用路由组,那么您 Laravel 就没有做对。
是的。只需在主控制器路由之前声明您的 "exception" 路由。
Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
您也可以将其他那些定义为控制器路由。 before Route::controller('admin')
因为 Laravel 在你定义的其他路由中搜索注册路由。由于 /admin/gallery
将匹配 Route::controller('admin')
以及 Route::controller('admin/gallery')
后者必须首先定义:
Route::controller('admin/gallery', 'AdminGalleryController');
Route::controller('admin/foo', 'AdminFooController');
Route::controller('admin', 'AdminController');
而不是每次写 admin
路由组也可能是一个不错的改进:
Route::group(['prefix' => 'admin'], function(){
Route::controller('gallery', 'AdminGalleryController');
Route::controller('foo', 'AdminFooController');
Route::controller('/', 'AdminController');
});
努力让我的 Laravel 项目在这里井井有条,同时让它成长。
目前我使用:
Route::controller('/admin', 'AdminController');
...为了让控制器为一般管理页面提供服务。这工作正常,但是出于清洁原因,我想将特定的子查询委托给其他控制器。
例如,我希望 /admin/dashboard 解析为 AdminController@getDashboard。我还希望 /admin/gallery/ 解析为 AdminGalleryController@getIndex 和 /admin/foo/bar 解析为 AdminFooController@getBar.
有没有简单的方法可以像这样慢慢扩展功能?
我们已经迁移到 Laravel 5 和 5.1,这仍然是做事的好方法。如果您没有在 Laravel 中使用路由组,那么您 Laravel 就没有做对。
是的。只需在主控制器路由之前声明您的 "exception" 路由。
Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
您也可以将其他那些定义为控制器路由。 before Route::controller('admin')
因为 Laravel 在你定义的其他路由中搜索注册路由。由于 /admin/gallery
将匹配 Route::controller('admin')
以及 Route::controller('admin/gallery')
后者必须首先定义:
Route::controller('admin/gallery', 'AdminGalleryController');
Route::controller('admin/foo', 'AdminFooController');
Route::controller('admin', 'AdminController');
而不是每次写 admin
路由组也可能是一个不错的改进:
Route::group(['prefix' => 'admin'], function(){
Route::controller('gallery', 'AdminGalleryController');
Route::controller('foo', 'AdminFooController');
Route::controller('/', 'AdminController');
});