Ich arbeite an einer einfachen Logik des Speicherns meines Einkaufswagens in Sitzung mit Yii2 native yii \ web \ Sitzung. Jedes Mal, wenn ich einen Artikel in einen Warenkorb hinzufügen nenne ich eine Methode:Yii2 erstellt neue Sitzung, anstatt bestehende zu öffnen
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'));
}
diese Methode mit einem Warenkorb-Modell funktioniert und fügt meinen Artikel die Sitzung:
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,
];
}
}
und alles gut geht, bis ich versuch einen anderen Gegenstand hinzuzufügen. Dann Yii, anstatt vorhandene Sitzung zu öffnen, erstellt eine neue mit diesem letzten Element, das ich hinzugefügt habe. Was kann der Grund für diese Art von Verhalten sein?
Ich arbeite auf einem lokalen Webserver OpenServer und hat keine Einstellung geändert, die möglicherweise mit Sitzungen zusammenhängen.
Probieren Sie session_status() zu Beginn Ihrer Aktion aus, um den Status Ihrer Sitzung anzuzeigen. –