Расчет стоимости в корзине

Тема в разделе "Общие вопросы", создана пользователем Sun124, 29 июн 2022.

  1. Sun124

    Sun124 Новичок

    Сообщения:
    2
    Симпатии:
    0
    Добрый день, подскажите пожалуйста, как происходит расчет стоимости в корзине?

    Например в карточке товара я нажал добавить в корзину и указал количество, вот не могу понять, в каком контроллере происходит эта калькуляция и как это все передается между контроллерами?
     
  2. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    аяксом передается запрос в контроллер checkout/cart/add
    фрагмент кода js
    HTML:
    $('#button-cart').on('click', function() {
        $.ajax({
            url: 'index.php?route=$('#button-cart').on('click', function() {
        $.ajax({
            url: 'index.php?route=checkout/cart/add',
    в контроллере вызывается метод библиотеки cart
    PHP:
    $this->cart->add($this->request->post['product_id'], $quantity$option$recurring_id);
    в котором товар записывается в базу
    PHP:
        public function add($product_id$quantity 1$option = array(), $recurring_id 0) {
            
    $query $this->db->query("SELECT COUNT(*) AS total FROM " DB_PREFIX "cart WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int) $product_id "' AND recurring_id = '" . (int) $recurring_id "' AND `option` = '" $this->db->escape(json_encode($option)) . "'");

            if (!
    $query->row['total']) {
                
    $this->db->query("INSERT INTO " DB_PREFIX "cart SET api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "', customer_id = '" . (int) $this->customer->getId() . "', session_id = '" $this->db->escape($this->session->getId()) . "', product_id = '" . (int) $product_id "', recurring_id = '" . (int) $recurring_id "', `option` = '" $this->db->escape(json_encode($option)) . "', quantity = '" . (int) $quantity "', date_added = NOW()");
            } else {
                
    $this->db->query("UPDATE " DB_PREFIX "cart SET quantity = (quantity + " . (int) $quantity ") WHERE api_id = '" . (isset($this->session->data['api_id']) ? (int) $this->session->data['api_id'] : 0) . "' AND customer_id = '" . (int) $this->customer->getId() . "' AND session_id = '" $this->db->escape($this->session->getId()) . "' AND product_id = '" . (int) $product_id "' AND recurring_id = '" . (int) $recurring_id "' AND `option` = '" $this->db->escape(json_encode($option)) . "'");
            }
        }
     
    Sun124 нравится это.
  3. fanatic

    fanatic Продвинутый пользователь

    Сообщения:
    1.415
    Симпатии:
    239
    никак
    если в контроллере нужны данные корзины, просто достаются данные из базы