如何将会话数据从中间件发送到布局?
How to send session data from middleware to layout?
我有中间件:
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>
这是您可以执行的操作。使用 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', '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
我仍然在我的布局中看不到此消息,当我以学生身份登录并转到网站(例如 /teachers)时,没有错误,只有教师才能访问...
我不向我的控制器添加任何内容?只有中间件和视图?
我有中间件:
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>
这是您可以执行的操作。使用 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', '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
我仍然在我的布局中看不到此消息,当我以学生身份登录并转到网站(例如 /teachers)时,没有错误,只有教师才能访问... 我不向我的控制器添加任何内容?只有中间件和视图?