Я использую CakePHP 3.2 для написания приложения корзины покупок.CakePHP 3: удалить и обновить массив из файла cookie
Я использую cookie для добавления предметов в корзину.
Теперь я хочу обновить и удалить значение из корзины. так что если пользователь нажмет на тот же продукт add to cart
с другим значением quantity
, то существующая запись будет удалена, а новые будут добавлены в корзину.
Это мой метод addToCart()
.
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());
}
}
}
Но это дает ошибку как
Notice (8): Array to string conversion [APP/Controller/OrdersController.php, line 148]
Как я могу обновить значение количества в корзине.
что в строке 148? – claudios
Пример: у меня уже есть product_id (1) и количество (3). Теперь вы вызвали функцию addToCart() с тем же product_id, теперь вы хотите переписать количество или (oldquantity + current quantity). Дайте мне знать –
@claudios Я выделил строку 148 в коде. –