Я работаю над простой логикой хранения моей корзины покупок в сеансе с использованием родного Yii2 yii \ web \ Session. Каждый раз, когда я добавить элемент в корзину я вызываю метод:Yii2 создает новую сессию вместо открытия существующих
public function actionAdd() {
$id = Yii::$app->request->get('id');
$product = Product::findOne($id);
$session = Yii::$app->session;
$session->open();
$cart = new Cart();
$cart->addToCart($product);
$this->layout = false;
return $this->render('cart-modal', compact('session'));
}
этот метод работает с тележкой модели и добавляет мой деталь к сессии:
public function addToCart($product, $qty = 1) {
if(isset($_SESSION['cart'][$product->id])) {
$_SESSION['cart'][$product->id]['qty'] += $qty;
} else {
$_SESSION['cart'][$product->id] = [
'qty' => $qty,
'title' => $product->title,
'price' => $product->price,
'image' => $product->image,
];
}
}
и все идет хорошо, пока я попробуйте добавить другой элемент. Затем Yii вместо открытия существующего сеанса создает новый с этим последним элементом, который я добавляю. Что может быть причиной такого поведения?
Я работаю на локальном веб-сервере OpenServer и не изменял никаких параметров, которые могут быть связаны с сеансами.
Попробуйте session_status() в начале действия, чтобы увидеть статус вашей сессии. –