Laravel变量在每个视图中的使用

时间:2018-11-30 02:35:31

标签: laravel

我想确保这两个变量连接在一起。登录期间由哪个变量确定:ROLE。用户将只能查看仅在其下工作的信息。

LoginController.php

protected function authenticated($request, $user)
{ 
    if($user->role == 'workers') {

       $this->redirectTo = ('/home');
    } else if($user->role == 'manager') {

       $this->redirectTo = ('/welcome');
    } else {//($user->role = 'admin')

      $this->redirectTo = ('/dashboard');
    }

    return redirect()->intended($this->redirectPath());
}

AttendanceController.php

class AttendanceViewController extends Controller
{
    protected function index()
    {
       $attendance1 = DB::select('select * from attendance where line_num = "$role"');

       return view('attendanceview',['attendance1'=>$attendance1]);
    }
}

我尝试了来自我们朋友的建议:会话和授权,它似乎起作用,但是并没有在AttendanceController中显示我想要的信息。

3 个答案:

答案 0 :(得分:1)

此要求不会请求“全局”变量。

在任何控制器中,您都可以通过Auth外观访问用户:

public function index() 
{
  if (Auth::check()) {
    // The user is logged in...
    if(Auth::user()->role === 'something') {
      // Do something when x role
    }
  }
}

请注意,这是一个非常原始的示例-您很可能希望通读授权文档(https://laravel.com/docs/5.7/authorization),它比简单的if检查提供了更可靠的授权方法(而非身份验证)。

以上代码片段的重点更多是表明您不需要全局变量即可执行所需的操作。

如果您绝对需要使用全局变量(请不要-确实不需要),您仍然可以使用所有常规的PHP方法,例如:

$GLOBALS['variable'] = 'foo';

答案 1 :(得分:0)

nia

我会将您需要的信息保存到会话中,因为这将在他们每次登录时更新信息

可以这样做:

Session::put('yourUniqueSessionName', 'valuesYouWishToStore');

您可以这样访问会话数据:

if (Session::has('yourUniqueSessionName') ) {

    $data = Session::get('yourUniqueSessionName');

} else {

    $data = (get the data that you want again);

}

这将允许您查询会话数据,并查看要允许他们访问的内容。

有关更多信息:

https://laravel.com/docs/5.7/session

希望这会有所帮助

答案 2 :(得分:0)

在尝试了ChrisJosh的建议之后,我更新了代码:

LoginController.php

protected function authenticated($request, $user)
{

     $user = auth()->user();
     $role=$user->role;
     Session::put('role', $role);


    if($user->role == 'workers') {

        $this->redirectTo = ('/home');
    }  else if($user->role == 'manager') {

        $this->redirectTo = ('/welcome');
    } else { //($user->role = 'admin')

        $this->redirectTo = ('/dashboard');
    }

    return redirect()->intended($this->redirectPath());
}

AttendanceController.php

public function index() {

    $user = auth()->user();
    $position=$user->position;
}