Laravel控制器委派

Laravel控制器委派,laravel,laravel-4,laravel-5,laravel-routing,Laravel,Laravel 4,Laravel 5,Laravel Routing,努力让我的Laravel项目在这里井井有条,同时让它成长 目前我使用: Route::controller('/admin', 'AdminController'); …以便允许控制器为常规管理页面提供服务。这很好,但是出于清洁的原因,我想将特定的子查询委托给其他控制器 例如,我希望/admin/dashboard解析为AdminController@getDashboard。我还想/admin/gallery/解析为AdminGalleryController@getIndex和/admin

努力让我的Laravel项目在这里井井有条,同时让它成长

目前我使用:

Route::controller('/admin', 'AdminController');
…以便允许控制器为常规管理页面提供服务。这很好,但是出于清洁的原因,我想将特定的子查询委托给其他控制器

例如,我希望/admin/dashboard解析为AdminController@getDashboard。我还想/admin/gallery/解析为AdminGalleryController@getIndex和/admin/foo/bar解析为AdminFooController@getBar

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


我们已经迁移到了Laravel5和5.1,这仍然是一个很好的方法。如果您没有在Laravel中使用路由组,则说明您没有正确使用Laravel。

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

Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
对。只需在主控制器路由之前声明“异常”路由

Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
对。只需在主控制器路由之前声明“异常”路由

Route::get('/admin/gallery','AdminGalleryContoller@getIndex');
Route::get('/admin/dashboard','AdminController@getDasboard');
Route::controller('/admin','AdminController');
对。只需在主控制器路由之前声明“异常”路由

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

您也可以将这些其他路由定义为控制器路由。只需在
Route::controller('admin')
之前执行此操作,因为Laravel会在您定义的其他路径中搜索已注册的路径。由于
/admin/gallery
将匹配
路由::控制器('admin')
以及
路由::控制器('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');
});

您也可以将这些其他路由定义为控制器路由。只需在
Route::controller('admin')
之前执行此操作,因为Laravel会在您定义的其他路径中搜索已注册的路径。由于
/admin/gallery
将匹配
路由::控制器('admin')
以及
路由::控制器('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');
});

您也可以将这些其他路由定义为控制器路由。只需在
Route::controller('admin')
之前执行此操作,因为Laravel会在您定义的其他路径中搜索已注册的路径。由于
/admin/gallery
将匹配
路由::控制器('admin')
以及
路由::控制器('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');
});

您也可以将这些其他路由定义为控制器路由。只需在
Route::controller('admin')
之前执行此操作,因为Laravel会在您定义的其他路径中搜索已注册的路径。由于
/admin/gallery
将匹配
路由::控制器('admin')
以及
路由::控制器('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');
});

那不是真的。只有在具有相同的URI和方法时,它才会覆盖上一个路由。然而,
Route::controller('admin')
只会抓取以
admin
开头的任何请求。get路由需要在控制器路由之前定义。你当然是对的,这是漫长的一天。编辑了我的答案。那不是真的。只有在具有相同的URI和方法时,它才会覆盖上一个路由。然而,
Route::controller('admin')
只会抓取以
admin
开头的任何请求。get路由需要在控制器路由之前定义。你当然是对的,这是漫长的一天。编辑了我的答案。那不是真的。只有在具有相同的URI和方法时,它才会覆盖上一个路由。然而,
Route::controller('admin')
只会抓取以
admin
开头的任何请求。get路由需要在控制器路由之前定义。你当然是对的,这是漫长的一天。编辑了我的答案。那不是真的。只有在具有相同的URI和方法时,它才会覆盖上一个路由。然而,
Route::controller('admin')
只会抓取以
admin
开头的任何请求。get路由需要在控制器路由之前定义。你当然是对的,这是漫长的一天。编辑了我的答案。你被剪了几分钟,但我会因为它提供的优雅而奖励答案。你被剪了几分钟,但我会因为它提供的优雅而奖励答案。你被剪了几分钟,但我会因为它提供的优雅而奖励答案。你被剪了几分钟,但我要为它提供的优雅给予答案。