Laravel 5.2:会话值不会在不同的路由中持续存在?

时间:2016-04-01 10:52:17

标签: php laravel session

我正在使用Laravel 5.2。 (我是新的Laravel用户)

我需要使用会话。当然,请从不同的路由/页面中读取会话值。这是一个简单的概念,简单地说:

  1. 保存路线中的某些会话值。
  2. 从另一条不同路线中检索值。
  3. 这是我使用的代码。

    Route::get('write', function () {
        session()->put('food', 'banana');
        session()->save();
        echo session()->get('food'); // <------ Shows: 'banana'
    });
    
    Route::get('read', function () {
        echo session()->get('food'); // <------ Shows nothing*
    });
    
    • 我错过了什么(或)请问Sessions的正确方法是什么?

    谢谢大家。

2 个答案:

答案 0 :(得分:1)

原因是session()->pull()实际上从会话中提取了一个元素并将其从会话中删除。所以在/write召唤你之后,你的会话中什么也没有。这就是/read无法提取任何内容的原因。

您应该在方案中使用session()->get('food')而不是pull。 还要确保您的路由使用web中间件。

Route::group(['middleware' => ['web']], function () {
    Route::get('write', function () {
        session()->put('food', 'banana');
        echo session()->get('food'); // <------ Shows: 'banana'
    });

    Route::get('read', function () {
        echo session()->get('food'); // <------ Shows 'banana' too
    });
});

另请查看官方文档以获取进一步阅读:https://laravel.com/docs/5.2/session

答案 1 :(得分:0)

在您输入或修改内容后使用session()->save()

我通常通过立面Session::save();

来做

如果没有保存,会话对象就不会知道它。