代码之家  ›  专栏  ›  技术社区  ›  wenus

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

  •  0
  • wenus  · 技术社区  · 8 年前

    我有中间件:

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

    $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>
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   FULL STACK DEV    8 年前

    这是你能做的。使用 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('/');
    
    }
    

    然后在视图中显示此会话。

        2
  •  0
  •   wenus    8 年前

    我的路由如下所示:

    Route::group(['middleware' => ['auth', 'student']], function () {
    Route::get('/subjects', 'PanelController@showSubjects');
    }
    
    Route::group(['middleware' => ['auth', 'teacher']], function () {
    Route::get('/teachers', 'PanelController@showClasses');
    

    在我看来,我的fmiddleware函数句柄非常符合您的建议:

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

    我仍然无法在我的布局中看到这条消息,当我以学生身份登录并进入网站(例如/教师)时,没有错误,只有教师才能访问。。。 我不知道;我的控制器没有添加任何内容?只有中间件和视图?