Ich benutze CakePHP 3.2 zum Schreiben einer Warenkorb-Anwendung.CakePHP 3: Array aus Cookie löschen und aktualisieren
Ich verwende Cookies, um Artikel zum Warenkorb hinzuzufügen.
Jetzt möchte ich den Wert aus dem Warenkorb aktualisieren und löschen. Wenn der Benutzer auf das gleiche Produkt add to cart
mit einem anderen quantity
Wert klickt, wird der vorhandene Datensatz gelöscht und neue werden zum Warenkorb hinzugefügt.
Dies ist meine addToCart()
Methode.
public function addToCart()
{
$this->loadModel('Products');
if ($this->request->is('post')) {
$p_id = $this->request->data('product_id');
$p_quantity = $this->request->data('qnty');
$product = $this->Products->get($p_id);
$product->quantity = $p_quantity;
if (!$product) {
throw new NotFoundException(__('Invalid Product'));
}
$cart = $this->Cookie->read('Cart') ? $this->Cookie->read('Cart') : [];
$itemInCart = false;
$itemUpdated = false;
if ($cart != null) {
foreach($cart as $cart_item):
if ($cart_item['id'] == $p_id) {
if ($cart_item['quantity'] != $p_quantity) {
$this->Cookie->delete('Cart.'.$cart_item); // line 148
$cart[] = $product;
$this->Cookie->write('Cart', $cart);
$itemsCount = count($this->Cookie->read('Cart'));
$this->Flash->success('Product updated in cart');
return $this->redirect($this->referer);
}
$itemInCart = true;
}
endforeach;
}
if (!$itemInCart) {
$cart[] = $product;
$this->Cookie->write('Cart', $cart);
$itemsCount = count($this->Cookie->read('Cart'));
if ($itemUpdated) {
$this->Flash->success(__('Product updated in cart'));
} else {
$this->Flash->success(__('Product added to cart'));
}
return $this->redirect($this->referer());
} else {
$this->Flash->success(__('Product is already in cart'));
return $this->redirect($this->referer());
}
}
}
Aber dies gibt Fehler als
Notice (8): Array to string conversion [APP/Controller/OrdersController.php, line 148]
Wie kann ich die Menge Wert im Warenkorb aktualisieren.
was ist in der Leitung 148? – claudios
Nehmen Sie ein Beispiel: Ich habe bereits product_id (1) und Menge (3). Jetzt haben Sie die Funktion addToCart() mit der gleichen product_id aufgerufen, jetzt wollen Sie die Menge überschreiben oder (alte Menge + aktuelle Menge). Lass es mich wissen –
@claudios Ich habe die Zeile 148 im Code markiert. –