在if-statement里面没有设置Laravel会话变量,这是真正的

时间:2018-02-23 15:12:57

标签: laravel session session-variables

我有这个控制器功能来刷新会话的输入,以便在以后重新访问页面时检索它。

public function index(Request $request)
{   
    if ($request->has('email_login')) {

        // $request->flashOnly(['email_login']); // I want to use this, but doesn't work either

        session(['test' => $request->email_login]); // This DOES NOT get stored in the session

        session(['test3' => 'C']); // This DOES NOT get stored in the session

        echo  'yes we come here'; // This DOES output
    }

    session(['test2' => 'B']); // This DOES get flashed to the session
}

Q&安培; A

你的if条件是否正确?

是的我99.99%肯定,因为xdebug逐步通过if-body和echo工作(当它不是真正的时候不会这样)

您的会话是否已开始?

是的我相信是因为其他人test2不会被设置

这是ajax请求吗?

不,但是当我将这个变量置于服务器端时,它根本不重要(但有些人认为它确实很重要)

所以我的会话只包含test2

1 个答案:

答案 0 :(得分:0)

  

这不是一个好的答案,但它解决了我的问题。这就是我的原因   发表它。我不会接受它,因为解释会是均匀的   更好。

我在this page找到了解决方案但是我仍然不明白为什么会在此请求中发生这种情况。

我现在在会话对象上手动调用save()。我之前不需要做的事情。

public function index(Request $request)
{   
    if ($request->has('email_login')) {

        $request->flashOnly(['email_login']); 
        session()->save();
    }
}