Проверить, есть ли товар в корзине - Торт php 3 - PullRequest
0 голосов
/ 05 августа 2020

Друзья, у меня есть этот метод, чтобы проверить, есть ли товар в корзине. То же самое, он добавляет, меняет количество, если продукт существует, но он также позволяет отправить продукт снова.

.
.
$order = $this->Orders->newEntity();
            if ( $this->request->is( 'post' ) ) {
                $order = $this->Orders->patchEntity( $order, $this->request->getData() );
                $order->order = $this->Orders->Products->get( $order->product_id, ['contain' => ['Users']] );
                $session = $this->request->getSession();
                $cart = $session->read( 'cart' );

                $counter = 0;
                
                foreach((array) $cart as $cartOne){

                    if($cartOne['product_id'] == $order->product_id){
                        $cartOne['quantity'] += 1;
                        $counter++;
                        break;
                    }
                }

                $cart[] = $order;
                $session->write('cart', $cart);

Я признателен, если кто-нибудь сможет проанализировать! Я действительно не могу сделать этот фильтр.

1 Ответ

1 голос
/ 06 августа 2020

Ваш break выходит из foreach l oop, но затем вы добавляете новый заказ в корзину ($cart[] = $order), не проверяя переменную $counter. Вы, вероятно, захотите сначала проверить это:

if (!$counter) {
    $cart[] = $order;
}
...