有没有什么干净的方法来隔离管理路由?:laravel 5.1


Is there any clean way to isolate the admin routes ? : laravel 5.1

Routes.php 中的代码如下

Route::group([
    'middleware' => 'auth',
], function() {
    Route::get('/Categories-List', 'Category_Controller@index');
    Route::get('/Create-Category', 'Category_Controller@create');
    Route::post('/SaveCategory', 'Category_Controller@store')->middleware(['isAdmin']);
    Route::post('/UpdateCategory', 'Category_Controller@update')->middleware(['isAdmin']);
});

出了什么问题

还有其他100条路由被定义,其中包含许多属于管理员的路由。

有没有什么干净的方法来隔离管理路由?

您可以嵌套路由组:

Route::group([
    'middleware' => 'auth',
], function() {
    Route::get('/Categories-List', 'Category_Controller@index');
    Route::get('/Create-Category', 'Category_Controller@create');
    Route::group([
        'middleware' => 'isAdmin',
    ], function() {
        Route::post('/SaveCategory', 'Category_Controller@store');
        Route::post('/UpdateCategory', 'Category_Controller@update');
    });
});

您也可以通过app/Providers/RouteServiceProvider.php将管理路由放在一个完全独立的文件中(添加另一行,如现有的require app_path('Http/routes.php');)。

我上周偶然发现了这个,并在github上发布了它。您可以使用这个Laravel包(Laravel上下文)将您的管理上下文全部分离在一起。

假设您的应用程序中有两个上下文:管理面板和RESTful WebService。这当然是两个完全不同的上下文,因为在一个上下文中,你可能想要获得所有资源(即,包括垃圾),而在另一个上下文,你只想要活动的资源。

当服务提供商真的派上用场时,唯一的问题是Laravel没有现成的解决方案来为不同的上下文加载不同的服务提供商。

这个包让您可以将不同的存储库注册到一个单一的接口,并通过您的上下文服务提供商将它们绑定,使用Laravel令人惊叹的IoC容器来解决我们需要绑定的具体实现,具体取决于我们所处的上下文。

谢谢,

Karmendra