路由用户角色Laravel 5.4

时间:2017-05-25 05:56:53

标签: laravel

我对这种情况非常困惑。我有两个资源名称的路由。

Route::resource('product', 'Product\AreaManagerProductController');
Route::resource('product', 'Product\SystemAdminProductController');

我需要将其作为一个,因为我有一个上下文绑定。

$this->app->when(AreaManagerProductController::class)
          ->needs(ProductInterface::class)
          ->give(AreaManagerProductRepository::class);

           $this->app->when(SystemAdminProductController::class)
          ->needs(ProductInterface::class)
          ->give(SystemAdminProductRepository::class);

上下文绑定工作正常......但我需要像这样改变我的路线。

Route::resource('product_area_manager', 'Product\AreaManagerProductController');
Route::resource('product_system_admin', 'Product\SystemAdminProductController');

我创建了ProductController和某种奇怪的解决方案。

public function index(){

        //Create a conditional statement base on user

        return app('App\Http\Controllers\Product\AreaManagerProductController')->index();

    }

它可能有效,但它不会触发中间件......在这种情况下,最佳做法是什么。 TY

1 个答案:

答案 0 :(得分:3)

你可以像这样使用你的路线

Route::group(['prefix' => 'product', 'namespace' => 'Product', 'middleware' => '<your middleware>'], function() {

        Route::resource('area_manager', 'AreaManagerController');
        Route::resource('system_admin', 'SystemAdminController');
});

我对路由进行分组的原因是为了减少冗余,我从控制器名称中删除Product的原因是,因为已经有namespace Product,所以不需要长类名。

如果您想要访问AreaManagerControllerSystemAdminController中的某些方法,只需将ProductController扩展到这些控制器。

如果要为这些控制器内的操作添加一些特定的middleware,我在middleware中添加了一个route group子句,如果不需要,它将影响这些控制器删除它。

希望这会对你有所帮助。