Laravel return 在中间件上的视图
Laravel return view on middleWare
在 laravel 中,我正在尝试检查用户 active
列,如果它的 0
必须显示为 your account is disable
的简单视图,在执行以下代码后我收到此错误:
我的中间件:
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
if (auth()->user()->active == 0) {
auth()->logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}
kernel.php
:
...
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\CheckUserActive::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
...
user-messages.blade.php
:
@extends('layouts.frontend.main')
@section('content')
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<p style="text-align: center;">
{!! $message !!}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
您不应该使用中间件来 return 视图,而是使用它来重定向到路由,然后 return 来自控制器的视图。
在你的中间件中:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::User()->active == 0) {
Auth::logout();
return redirect()->route('redirect-route');
}
}
return $next($request);
}
}
创建一个新的命名路由:
Route::get('/', [
'as' => 'redirect-route',
'uses' => 'PageController@redirectFunction',
]);
现在在您的控制器中创建一个函数:
public function redirectFunction()
{
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
您是否尝试删除:
$response->header->setCookie(...);
并修改为:
$response->withCookie(..your cookie here...);
看看这个post
你应该试试这个:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::user()->active == 0) {
Auth::logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}
根据文档,您可以使用以下方式访问视图
response()->view('custom');
这一项适用于 return 从中间件查看
return new response(view('view.path'));
在 laravel 中,我正在尝试检查用户 active
列,如果它的 0
必须显示为 your account is disable
的简单视图,在执行以下代码后我收到此错误:
我的中间件:
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (auth()->check()) {
if (auth()->user()->active == 0) {
auth()->logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}
kernel.php
:
...
protected $middlewareGroups = [
'web' => [
...
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\CheckUserActive::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
...
user-messages.blade.php
:
@extends('layouts.frontend.main')
@section('content')
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<p style="text-align: center;">
{!! $message !!}
</p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
您不应该使用中间件来 return 视图,而是使用它来重定向到路由,然后 return 来自控制器的视图。
在你的中间件中:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::User()->active == 0) {
Auth::logout();
return redirect()->route('redirect-route');
}
}
return $next($request);
}
}
创建一个新的命名路由:
Route::get('/', [
'as' => 'redirect-route',
'uses' => 'PageController@redirectFunction',
]);
现在在您的控制器中创建一个函数:
public function redirectFunction()
{
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
您是否尝试删除:
$response->header->setCookie(...);
并修改为:
$response->withCookie(..your cookie here...);
看看这个post
你应该试试这个:
use Auth;
class CheckUserActive
{
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (Auth::user()->active == 0) {
Auth::logout();
$message = 'your account is disable';
return view('layouts.frontend.pages.user-messages', compact('message'));
}
}
return $next($request);
}
}
根据文档,您可以使用以下方式访问视图
response()->view('custom');
这一项适用于 return 从中间件查看
return new response(view('view.path'));