我有线问题。我把会话中的一些字符串/对象放入会话中,当我想要得到它时就不存在了。
这是代码:
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');
}
}
答案 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)
您是否正在使用子域名?