私はショッピングカートアプリケーションの作成にCakePHP 3.2を使用しています。CakePHP 3:クッキーから配列を削除して更新する
私はクッキーを使って商品をカートに追加しています。
今すぐカートから価値を更新して削除したいと考えています。ユーザーが同じ製品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)とquantity(3)を持っています。これで、同じproduct_idでaddToCart()関数を呼び出しました。次に、数量または(古い数量+現在の数量)を上書きします。 –
@claudios私はコード内に148行目をマークしました。 –