我有以下代码:
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}");
这可能吗?
答案 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);
}