Перейти к содержанию

Рекомендуемые сообщения

Добрый день.

В ОС 2.02 пытаюсь использовать для обновления корзины cart.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');
			},
			complete: function() {
				$('#cart > button').button('reset');
			},			
			success: function(json) {
				// Need to set timeout otherwise it wont update the total
				setTimeout(function () {
					$('#cart > button').html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
				}, 100);

				if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {
					location = 'index.php?route=checkout/cart';
				} else {
					$('#cart > ul').load('index.php?route=common/cart/info ul li');
				}
			}
		});
	},

На запрос

key    "YToxOntzOjEwOiJwcm9kdWN0X2lkIjtpOjQyO30"
quantity    "4"

 

Получаю ответ:

 

<b>Warning</b>: Invalid argument supplied for foreach() in <b>/Users/MacBook/Sites/TEXNOSALES/catalog/controller/checkout/cart.php</b> on line <b>414</b><b>Warning</b>: Cannot modify header information - headers already sent by (output started at /Users/MacBook/Sites/TEXNOSALES/index.php:102) in <b>/Users/MacBook/Sites/TEXNOSALES/system/library/response.php</b> on line <b>12</b>

 

foreach:

        if (!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'));
        }

и так с любой позицией.

html запрос работает, но хотелось бы разобраться с JSON.

 

Пробовал в свежей установке ОС 2.02 в дефолтной теме и то же самое.

 

Подскажите пожалуйста, что я делаю не так?

 

Благодарю.

Изменено пользователем paulittop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы пытаетесь в foreach завернуть $this->request->post['quantity'], когда в нем нет массива.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И как же ту правильно поступить?

 

Вроде бы дефолтная функция ОС, которая лежит в common.js и такая лажа.

Я встречал примеры людей, у которых заработало.

Подскажите пожалуйста в чем тут загвоздка?

Как сделать так, что бы массив был?

Изменено пользователем paulittop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодарю  ibond за подсказку.

В итоге заработало с помощью слегка переделанной функции edit() в cart.php:

 

    public function update() {
        $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));
    }

 

Буду рад увидеть комментарии по поводу этого решения.

 

Теперь меня интересует решение для того, что бы делать добавление и удаление продукта из корзины с помощью AJAX, так как корзина размещена в карточке товара.

Буду признателен за ваше содействие.

 

Благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо парни

Изменено пользователем Leoon
лол

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.