Laravel会话在视图之间不起作用

时间:2016-05-08 08:53:49

标签: laravel

它是一款laravel 5.2 app。我有这两个功能:

public function page1()
{
        Session::put('test', '1');
        $value = Session::get('test');
        echo 'test: '.$value;
}

public function page2()
{
    $value = Session::get('test');
    echo 'test: '.$value;
}

我先去localhost / page1。我可以看到页面打印出来:

test: 1

然后我转到localhost / page2

但页面打印:

test:

所以看起来会话不会在视图之间共享。为什么?这是一些配置问题吗?

这是route.php:

Route::group(['prefix' => 'pages'], function()
{
    Route::get('page1', 'AdminController@page1');
    Route::get('page2', 'AdminController@page2');
});

2 个答案:

答案 0 :(得分:2)

我在控制器中编写与您相同的代码,如下所示:

public function page1()
{
      Session::put('test', '1 ');
      $value = Session::get('test');
      echo 'test: '.$value;
}

public function page2()
{
  $value = Session::get('test');
  echo 'test: '.$value;
}

和路径文件也一样:

Route::group(['prefix' => 'pages'], function()
{
    Route::get('page1', 'AdminController@page1');
    Route::get('page2', 'AdminController@page2');
});

它正常工作 - > 输出: http://localhost/laravel-5.2/public/pages/page1

test: 1

http://localhost/laravel-5.2/public/pages/page2

test: 1

答案 1 :(得分:1)

laravel https://github.com/laravel/framework/issues/8172

中存在会话持久性问题

如果您在更新会话后每次使用Session::save(),可能会解决您的问题。所以您的page1方法将

public function page1()
{
    Session::put('test', '1');
    Session::save()
    $value = Session::get('test');
    echo 'test: '.$value;
}