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

Laravel 如何将会话数据从中间件发送到布局?,laravel,middleware,Laravel,Middleware,我有: public function handle($request, Closure $next) { if ( Auth::check() && Auth::user()->isStudent() ) { return $next($request); } return redirect('/'); } 我想通过重定向将数据发送到布局,我尝试这样做: $errors = ['You don't have perm

我有:

 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);
Route::group(['middleware' => ['auth', 'student']], function () {
Route::get('/subjects', 'PanelController@showSubjects');
}

Route::group(['middleware' => ['auth', 'teacher']], function () {
Route::get('/teachers', 'PanelController@showClasses');
@if (session('error'))
        <div class="alert alert-dismissible alert-danger">
            <ul>
                    <li>{{session('error')}}</li>
            </ul>
        </div>
@endif
但它不起作用,我的布局没有看到这个

这是我的布局:

<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>

@if(会话('errors'))
Wystąpi਴y nast਴puj਴ce b਴dy:
    @foreach(会话('errors')作为$error)
  • {!!$error!!}
  • @endforeach
@恩迪夫 @产量(‘含量’)
以下是您可以做的。使用
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('/');

}

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

以下是您可以执行的操作。使用
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('/');

}

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

我认为我做错了。。。 我的路由如下所示:

$errors = ['You don't have permission, this side is ony for teachers']
return redirect('/login')->with('errors', $errors);
Route::group(['middleware' => ['auth', 'student']], function () {
Route::get('/subjects', 'PanelController@showSubjects');
}

Route::group(['middleware' => ['auth', 'teacher']], function () {
Route::get('/teachers', 'PanelController@showClasses');
@if (session('error'))
        <div class="alert alert-dismissible alert-danger">
            <ul>
                    <li>{{session('error')}}</li>
            </ul>
        </div>
@endif
在我看来,我的fmiddleware函数句柄显然是您的建议:

$errors = ['You don't have permission, this side is ony for teachers']
return redirect('/login')->with('errors', $errors);
Route::group(['middleware' => ['auth', 'student']], function () {
Route::get('/subjects', 'PanelController@showSubjects');
}

Route::group(['middleware' => ['auth', 'teacher']], function () {
Route::get('/teachers', 'PanelController@showClasses');
@if (session('error'))
        <div class="alert alert-dismissible alert-danger">
            <ul>
                    <li>{{session('error')}}</li>
            </ul>
        </div>
@endif
@if(会话('error'))
  • {{session('error')}
@恩迪夫
我仍然无法在我的布局中看到这条消息,当我以学生身份登录到例如/教师的网站时,没有错误,只有教师才能访问。。。
我不知道;你不能给我的控制器添加任何东西吗?只有中间件和视图?

我觉得我做错了什么。。。 我的路由如下所示:

$errors = ['You don't have permission, this side is ony for teachers']
return redirect('/login')->with('errors', $errors);
Route::group(['middleware' => ['auth', 'student']], function () {
Route::get('/subjects', 'PanelController@showSubjects');
}

Route::group(['middleware' => ['auth', 'teacher']], function () {
Route::get('/teachers', 'PanelController@showClasses');
@if (session('error'))
        <div class="alert alert-dismissible alert-danger">
            <ul>
                    <li>{{session('error')}}</li>
            </ul>
        </div>
@endif
在我看来,我的fmiddleware函数句柄显然是您的建议:

$errors = ['You don't have permission, this side is ony for teachers']
return redirect('/login')->with('errors', $errors);
Route::group(['middleware' => ['auth', 'student']], function () {
Route::get('/subjects', 'PanelController@showSubjects');
}

Route::group(['middleware' => ['auth', 'teacher']], function () {
Route::get('/teachers', 'PanelController@showClasses');
@if (session('error'))
        <div class="alert alert-dismissible alert-danger">
            <ul>
                    <li>{{session('error')}}</li>
            </ul>
        </div>
@endif
@if(会话('error'))
  • {{session('error')}
@恩迪夫
我仍然无法在我的布局中看到这条消息,当我以学生身份登录到例如/教师的网站时,没有错误,只有教师才能访问。。。
我不知道;你不能给我的控制器添加任何东西吗?只有中间件和视图?

您的视图是什么样子的?我更改了我的帖子并添加了我的布局您的视图是什么样子的?我更改了帖子并添加了我的布局在
@if
之前我想您可以用
{{dd(session()->all())}
检查数据是否已传递,因为如果使用
重定向('/login')->带有('errors',$errors)
它应该传递给routeOnly ma middleware auth redirect to/login,但我想检查第二个中间件(此处为student),如果它不是student,则我想重定向“/”并显示错误,您无权访问该中间件,目前没有任何效果:(在
@if
之前,我想你可以用
{dd(session()->all())}}
检查数据是否已传递,因为如果使用
重定向('/login')->with('errors',$errors)
它应该传递到routeOnly ma中间件auth重定向到/login,但我想检查第二个中间件(这里是学生)如果不是学生,则我希望重定向“/”并显示错误,即您无权访问该位置,目前没有任何效果:(