Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

  • 2 weeks later...

все таки не могу разобраться, в файле common.js есть функция update, вроде все правильно указано, ниже функция на удаление remove работает как надо, помогите!

common.js 

Спойлер

update: function(key, quantity) {
    $.ajax({
      url: 'index.php?route=checkout/cart/edit',
      type: 'post',
      data: 'key=' + key + '&quantity=' + (typeof quantity != 'undefined' ? quantity : 1),
      dataType: 'json',
      beforeSend: function() {
        $('#cart > .counter_quant').button('loading');
        $('.col-cart .slideDown').css('height', '');
      },
      complete: function() {
        $('#cart > .counter_quant').button('reset');
      },
      success: function(json) {
        var out = json['total'].substr(0, json['total'].indexOf(' '));

        // Need to set timeout otherwise it wont update the total
        setTimeout(function() {
          $('#cart-total').html(out);
        }, 100);

        if (
          getURLVar('route') == 'checkout/cart' ||
          getURLVar('route') == 'checkout/checkout'
        ) {
          location = 'index.php?route=checkout/cart';
        } else {
          $('#goods-add .modal-cart__content').load('index.php?route=common/cart_footer/info .cart_row');
          $('#simplecheckout-sum').append($('#simplecheckout-cart-sum'));
        }
        $('#goods-add .modal-cart__content').load('index.php?route=common/cart_footer/info .cart_row');
      },
      error: function(xhr, ajaxOptions, thrownError) {
       /* console.log(
          thrownError + '\r\n' + xhr.statusText + '\r\n' + xhr.responseText
        );*/
      }
    });
  },
  remove: function(key) {
    $.ajax({
      url: 'index.php?route=checkout/cart/remove',
      type: 'post',
      data: 'key=' + key,
      dataType: 'json',
      beforeSend: function() {
        $('#cart > button').button('loading');
        $('.col-cart .slideDown').css('height', '');
      },
      complete: function() {
        $('#cart > button').button('reset');
      },
      success: function(json) {
        var out = json['total'].substr(0, json['total'].indexOf(' '));
        // Need to set timeout otherwise it wont update the total
        setTimeout(function() {
          $('#cart-total').html(out);
        }, 100);

        if (
          getURLVar('route') == 'checkout/cart' ||
          getURLVar('route') == 'checkout/checkout'
        ) {
          location = 'index.php?route=checkout/cart';
        } else {
          $('#goods-add .modal-cart__content').load('index.php?route=common/cart_footer/info .cart_row');
        }
        $('#goods-add .modal-cart__content').load('index.php?route=common/cart_footer/info .cart_row');
        $('.f-baket .square').html(out);

        if (out == '0') {
          $('.f-baket').removeClass('highlight');
        }
      },
      error: function(xhr, ajaxOptions, thrownError) {
        console.log(
          thrownError + '\r\n' + xhr.statusText + '\r\n' + xhr.responseText
        );
      }
    });
  }
};

 

cart.php функция edit 

Спойлер

public function edit() {
		$this->load->language('checkout/cart');
	
		$json = array();
	
		// Update
		if (is_array($this->request->post['quantity']) 
			&& !empty($this->request->post['quantity'])
		) {
			foreach ($this->request->post['quantity'] as $key => $value) {
				$this->cart->update($key, $value);
			}
	
			unset($this->session->data['shipping_method']);
			unset($this->session->data['shipping_methods']);
			unset($this->session->data['payment_method']);
			unset($this->session->data['payment_methods']);
			unset($this->session->data['reward']);
	
			$this->response->redirect($this->url->link('checkout/cart'));
		} else if (is_numeric($this->request->post['quantity'])) {
			$json['total'] = sprintf($this->language->get('text_items'), 
				$this->cart->countProducts()
					+ (isset($this->session->data['vouchers'])
						? count($this->session->data['vouchers'])
						: 0), 
				$this->currency->format($total)
			);
		}
	
		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

 

cart.tpl

Спойлер

<div class="cart-card__counter">
                        <div class="counter">
                                <button type="button" class="counter_quant counter__minus">-</button>
                                <input name="quantity[<?php echo !empty($product['cart_id']) ? $product['cart_id'] : $product['key']; ?>]" class="counter__field" type="text" value="<?php echo $product['quantity']; ?>" data-max-value="15">
                                <button onclick="cart.update('<?php echo $product['cart_id']; ?>', '<?php echo $product['quantity']; ?>');" type="submit" data-toggle="tooltip" class="counter_quant  counter__plus">+</button>                    
                                <!-- <span style="font-weight:normal;">Количество: <?php echo $product['quantity']; ?></span> -->
                            </div>
                        </div>

 

 

Змінено користувачем axaxaxa
Надіслати
Поділитися на інших сайтах


Путем многих проб получилось если что помогу, пишите
 Вот мой пример 

файл /catalog/view/theme/тема/js common.js функция update

Спойлер

update: function(key, quantity) {
		$.ajax({
			url: 'index.php?route=checkout/cart/edit',
			type: 'post',
			data: 'key=' + key + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
			dataType: 'json',
			beforeSend: function() {
        $('#cart > button').button('loading');
        $('.col-cart .slideDown').css('height', '');
			},
			complete: function() {
				$('#cart > button').button('reset');
			},
			success: function(json) {
        var out = json['total'].substr(0,json['total'].indexOf(' '));

                // Need to set timeout otherwise it wont update the total
                setTimeout(function() {
                    $('#cart-total').html(out);
                }, 100);      
				

				if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
					location = 'index.php?route=checkout/cart';
				} else {
          $('#goods-add .modal-cart__content').load('index.php?route=common/cart_footer/info .cart_row');          
				}
			},
	        error: function(xhr, ajaxOptions, thrownError) {
	            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
	        }
		});
	},

 

файл /www/catalog/controller/checkout cart.php функция Edit

Спойлер

public function edit() {
        $this->load->language('checkout/cart');

        $json = array();

        // Update
        if (!empty($this->request->post['quantity'])) {

            $this->cart->update($this->request->post['key'], $this->request->post['quantity']);
            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);

        }
        $json['total'] = sprintf($this->currency->format($this->cart->getTotal()));
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

 

файл /catalog/view/theme/тема/template/common cart.tpl

Спойлер

<div class="counter">
    <button onclick="cart.update('<?php echo $product['cart_id']; ?>', '<?php echo $product['quantity'] - 1; ?>');" type="button" data-toggle="tooltip" class="counter_quant  counter__minus">-</button>   
    <input name="quantity[<?php echo !empty($product['cart_id']) ? $product['cart_id'] : $product['key']; ?>]" class="counter__field" type="text" value="<?php echo $product['quantity']; ?>" data-max-value="15">
    <button onclick="cart.update('<?php echo $product['cart_id']; ?>', '<?php echo $product['quantity'] + 1; ?>');" type="button" data-toggle="tooltip" class="counter_quant  counter__plus">+</button>                               
                                <!-- <span style="font-weight:normal;">Количество: <?php echo $product['quantity']; ?></span> -->
</div>

 

 

Вроде ничего не забыл....

И еще edit() – Метод изменяет количество товара в корзине. Принимает только post параметр «quantity». Когда вы нажимаете кнопку «+»(в моем случае прибавить товар) в корзине, javascript обработчик отсылает число (я на кнопку повешал количество + 1) в метод edit() контроллера cart.php.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.