如何将会话数据从中间件发送到布局?

问题描述:

我有中间件:如何将会话数据从中间件发送到布局?

public function handle($request, Closure $next) 
{ 
    if (Auth::check() && Auth::user()->isStudent()) 
    { 
     return $next($request); 
    } 

    return redirect('/'); 

} 

我woould喜欢将数据发送到我的布局与重定向,我tryed做这样的:

$errors = ['You don't have permission, this side is ony for teachers'] 
return redirect('/login')->with('errors', $errors); 

,但它不工作,我没有按布局”不要看这个。

这是我的布局:

<html> 
<head> 
</head> 
<body> 
@if (session('errors')) 
     <div class="alert alert-dismissible alert-danger"> 
      Wystąpiły następujące błędy:<br/> 
      <ul> 
       @foreach(session('errors') as $error) 
        <li>{!!$error!!}</li> 
       @endforeach 
      </ul> 
     </div> 
    @endif 

    @yield('content') 
</body> 
</html> 
+0

您的视图看起来如何? –

+0

我改变了我的帖子,并在'@ if之前添加了我的布局 – wenus

这里是你可以做什么。使用session()->flash('error','your Message')

在你看来,你可以做到这一点像这样

public function handle($request, Closure $next) 
{ 
if (Auth::check() && Auth::user()->isStudent()) 
{ 
    return $next($request); 
} 

session()->flash('error','your Message') 

return redirect('/'); 

} 

然后显示在你的意见本次会议。

我做某事错我想......我 路由看起来是这样的:

Route::group(['middleware' => ['auth', 'student']], function() { 
Route::get('/subjects', '[email protected]'); 
} 

Route::group(['middleware' => ['auth', 'teacher']], function() { 
Route::get('/teachers', '[email protected]'); 

我fmiddleware功能手柄excatly你怎么认为,我的看法是这样的:

@if (session('error')) 
     <div class="alert alert-dismissible alert-danger"> 
      <ul> 
        <li>{{session('error')}}</li> 
      </ul> 
     </div> 
@endif 

我仍然无法在布局中看到这条消息,当我作为学生登录时,并且以网站为例/教师,没有错误,只为教师访问...... 我不添加任何东西到我的控制器?只有中间件和视图?

+0

我认为你可以检查数据已经通过'{{dd(session() - > all())}}' –

+0

因为如果使用'redirect'/login') - >('errors',$ errors)'它应该传递给该路由 –

+0

只有ma中间件auth重定向到/ login,但我想检查第二个中间件(这里是学生),如果它不是学生那么我想重定向“/”并显示错误,您没有权限访问那里,现在没有任何工作:( – wenus