放入会话后,Laravel会话密钥为空

时间:2014-12-16 12:41:01

标签: php angularjs session laravel

我有线问题。我把会话中的一些字符串/对象放入会话中,当我想要得到它时就不存在了。

这是代码:

class CartController extends \BaseController
{

    public function index()
    {
        return Session::all(); // items is not there
    }

    public function store()
    {
        Session::put('items', Input::get('items'));
    }

}
角度

this.saveItemsToSession = function() {
    $http.post('cart', {
      items: 'test even string'
    });
  };

什么可能导致这个问题?

看起来Session不行。 这种方式有效:

session_start();
class CartController extends \BaseController
{

    public function index()
    {
        return $_SESSION['items'];
    }

    public function store()
    {
        $_SESSION['items'] = Input::get('items');
    }

}

3 个答案:

答案 0 :(得分:0)

    Session::all()

返回所有会话变量的数组,而

    $_SESSION['items']

返回'items'的会话,两个输出都不同。获得

    $_SESSION['items']

价值,以下是几种方式:

    Session::all()['items']

    Session::get('items')

答案 1 :(得分:0)

来自laravel docs:https://laravel.com/docs/master/routing

  

未放置在Web中间件组中的任何路由都不会   访问会话和CSRF保护,因此请确保所有路由   需要将这些功能放在组内。通常情况下,你会   将您的大部分路线放在此群组中:

Route::group(['middleware' => ['web']], function () {
     //all routes
});

将所有路由放在中间件中,您的问题就会解决。

答案 2 :(得分:-2)

您是否正在使用子域名?