2016-11-22 133 views
1

在我的Laravel应用程序中,我有不同的角色(用户,管理员,管理员)。Laravel路由相同的URL不同控制器

我想知道最佳做法来管理我的每个用户的主页,这意味着我想使用相同的URL但不同的意见。

看来,它不能直接在路线上完成:

Route::group(['middleware' => 'auth:user'], function() { 
    $u = 'user.'; 
    Route::get('/', ['as' => $u . 'home', 'uses' => '[email protected]']); 
}); 

Route::group(['middleware' => 'auth:manager'], function() { 
    $m = 'manager.'; 
    Route::get('/', ['as' => $m . 'home', 'uses' => '[email protected]']); 
}); 

其他方式将是每个人都重定向到同一控制器,控制器内,显示不同的看法。

Route::group(['middleware' => 'auth:all'], function() { 
     $a = 'authenticated.'; 
     Route::get('/', ['as' => $a . 'home', 'uses' => '[email protected]']); 
    }); 

但是它可以成为,如果你要管理超过2个角色很烦人......

最后的办法是使像路线一定条件:

Route::group(['middleware' => 'auth:all'], function() { 
      if (Auth::user()->hasRole('user)'{ 
      Route::get('/', ['as' => $a . 'home', 'uses' => '[email protected]']); 
    } else { 
Route::get('/', ['as' => $a . 'home', 'uses' => '[email protected]']); 
} 
     }); 

许多谢谢

回答

1

我wouldnt建议不同的角色在路线本身的不同视图对我来说最好的办法是创建控制器,处理所有的头版请求像f根据用户或如FrontPageController.blade.php并返回查看,并确保ü根据用户角色管理视图目录结构,如果整个页面看起来彼此不同,像resources/views/product/admin/view

resources/views/product/user/view 
resources/views/product/manager/view 

如果大部分元素都是一样的模板文件,我会建议你去大门

+0

thx,我想我会这样做然后:) – Andrew

+0

如果这解决您的问题标记作为别人的答案我也会帮助。 –

相关问题