我注意到在Laravel 5.6中,我的会话变量在第二页刷新之前没有传递给我的中间件 . 如果我重定向到页面,会话会在第一次尝试时传递给视图,但在我的实例中,我需要将内容传递给视图 .
有没有人注意到这一点并有解决方案?
Middleware: 假设您有一个名为 ViewData 的中间件,它将变量共享给视图 .
public function handle($request, Closure $next) {
$setHandle = session('setHandle')[0];
$account = AccountUser::where('handle', '=', $setHandle)->first();
view()->share('account', $account);
return $next($request);
}
Controller: Controller设置setHandle会话变量,然后返回一个视图:
public function add()
{
$setHandle = 'abcd';
session()->forget('setHandle');
session()->push('setHandle', $setHandle);
return view('account.add');
}
Reference in my View 我的视图将引用此中间件中的变量 .
<a class="navbar-brand brand-logo text-light" href="{!! url('account/'.$account->whatever) !!}">{!! $account->whatever !!}</a>
问题是第一个返回视图与旧的setHandle变量一起返回,当我再次刷新时,它返回带有setHandle变量的新帐户 .
我认为这可能与我的中间件设置位置有关,但我的viewData中间件是在StartSession中间件之后设置的,所以我认为会话会在调用中间件后刷新 .
\Illuminate\Session\Middleware\StartSession::class,
'App\Http\Middleware\ViewData',
任何帮助,将不胜感激 .