Laravel 5.4 - 根据角色选择路线

时间:2017-08-28 12:07:22

标签: laravel laravel-5 laravel-5.4

我有以下代码:

 Route::group(['middleware' => ['auth']], function () {

        dd($user);
        Route::get('/', 'SiteController@index');
    });

$ user 是在 AppServiceProvider 中创建的,但路径中无法访问

public function boot()
    {
        view()->composer('layouts.main', function($view){

            $employees     = \App\Bamboo::getEmployees();
            $employeeIndex = \App\Bamboo::getEmployeeIndex(auth()->user()->email, $employees);

            $view->with('employees', $employees);
            $view->with('user', $employees['employees'][$employeeIndex]);
        });
    }

为什么我会根据角色选择在 SiteController 中调用哪个函数(这包含在$ user中)?

我想做这样的事情:

$method = $user->role === 'dev' ? 'index' : 'admin';

Route::get('/', "SiteController@{$method}");

这可能吗?

1 个答案:

答案 0 :(得分:0)

你可以试试这样的事情

if($user->role === 'dev)
   Route::get('/', "SiteController@index");
else
   Route::get('/', "SiteController@admin");

另一种简单的方法是在Site控制器中定义一个函数来检查$ user是什么,然后返回另一个这样的路径:

public function getRoute(Request $r){
  if(Auth::user()->role === 'dev')
    return $this->index($r);
  else
    return $this->admin($r);
}