是否有任何干净的方法来隔离管理路由? :laravel 5.1

时间:2015-12-24 22:40:28

标签: php laravel-5 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条路由,其中​​包含许多属于admin的路径。

有没有干净的方法来隔离管理路线?

2 个答案:

答案 0 :(得分:0)

您可以嵌套路线组:

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');)。

答案 1 :(得分:0)

上周我碰到了这个,并在github上主演了这个节目。您可以使用此Laravel程序包(Laravel-context)将所有管理上下文分开。

  

假设您的应用程序中有2个上下文:管理面板和RESTful WebService。这肯定是两个完全不同的上下文,因为在一个上下文中,您可能希望获得所有资源(即包括已删除的),而在另一个上下文中,您只需要活动的资源。

     

这是服务提供商真正得心应手的时候,唯一的问题是Laravel没有为不同的环境加载不同服务提供商的现成解决方案。

     

该软件包使您可以将不同的存储库注册到单个接口,并通过Context的服务提供程序将它们绑定,使用Laravel令人惊叹的IoC容器来根据我们所处的上下文来解决我们需要绑定的具体实现。 / p>

谢谢,

Karmendra