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

时间:2017-07-27 14:42:04

标签: laravel middleware

我有中间件:

 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 个答案:

答案 0 :(得分:2)

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

}

然后在您的观看中显示此会话。

答案 1 :(得分:0)

我觉得我错了...... 我的路由如下:

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

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