Laravel控制器委派

时间:2015-02-20 15:38:32

标签: laravel laravel-4 laravel-5 laravel-routing

尝试让我的Laravel项目在这里组织起来,同时让它成长。

目前我使用:

Route::controller('/admin', 'AdminController');

...以便允许控制器为一般管理页面提供服务。这工作正常,但是出于清洁原因,我想将特定的子查询委托给其他控制器。

例如,我希望 / admin / dashboard 解析为 AdminController @ getDashboard 。我也希望 / admin / gallery / 解析为 AdminGalleryController @ getIndex ,并将 / admin / foo / bar 解析为 AdminFooController @ getBar

有没有一种简单的方法可以慢慢扩展这样的功能?


我们已经迁移到Laravel 5和5.1,这仍然是一个很好的做事方式。如果你没有在Laravel中使用路线组,那么你就没有正确地使用Laravel。

2 个答案:

答案 0 :(得分:2)

您也可以将其他人定义为控制器路线。只需在 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');
});

答案 1 :(得分:1)

是。只需在主控制器路由之前声明“异常”路由即可。

Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');