Как создать корзину объектов в Prestashop 1.6 - PullRequest
1 голос
/ 03 ноября 2019

У меня проблема с созданием объекта корзины в Prestashop 1.6. У меня ошибка:

2019/11/02 - 22:02:40: Property Cart->id_currency is empty at line 917 in file classes/ObjectModel.php

В режиме отладки я не вижу id объекта корзины, и это проблема, на мой взгляд. Это мой код:

if($id_product && $checkQty >= $quantity)
    {
        if (!$this->context->cart->id)
        {
            $this->context->cart->add();
            $cart = new Cart();
            if ($this->context->cart->id)
                $this->context->cookie->id_cart = (int)$this->context->cart->id;
        }else
        {
            $cart = new Cart($this->context->cookie->id_cart);
        }  

        $cart->updateQty(
            $quantity, 
            $id_product, 
            $id_product_attribute = null, 
            $id_customization = false,
            $operator = 'up', 
            $id_address_delivery = 0, 
            $shop = null, 
            $auto_add_cart_rule = true
            );

        $this->context->smarty->assign(array(
            'confirmation' => '1'
        ));        
    }

Конечно, когда у меня есть $ cart-> id, updateQty прекрасно работает. Спасибо за любую помощь.

С уважением

1 Ответ

0 голосов
/ 04 ноября 2019

Вам необходимо определить идентификатор валюты.

с помощью этого кода вы назначаете в своей корзине валюту из валюты, определенной в контексте:

$cart->id_currency = $context->cookie->id_currency;

, поэтому в вашемкод должен выглядеть так:

if($id_product && $checkQty >= $quantity)
    {
        if (!$this->context->cart->id)
        {
            $this->context->cart->add();
            $cart = new Cart();
            if ($this->context->cart->id)
                $this->context->cookie->id_cart = (int)$this->context->cart->id;
        }else
        {
            $cart = new Cart($this->context->cookie->id_cart);
        }  

        $cart->id_currency = $this->context->cookie->id_currency;

        $cart->updateQty(
            $quantity, 
            $id_product, 
            $id_product_attribute = null, 
            $id_customization = false,
            $operator = 'up', 
            $id_address_delivery = 0, 
            $shop = null, 
            $auto_add_cart_rule = true
            );

        $this->context->smarty->assign(array(
            'confirmation' => '1'
        ));        
    }
...