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

[Решено] Помогите понять добавление товара в корзину!

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

Добрый вечер! Не могу понять как товар со страницы товара попадает в корзину. Есть кнопка с id="button-cart". Есть скрипт на странице с аякс запросом на checkout/cart/add. Но мы же туда по клику передаем только опции:

$.ajax({
		url: 'index.php?route=checkout/cart/add',
		type: 'post',
		data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),
		dataType: 'json',

Как корзина понимает, что в нее попал нужный товар? Я беру по аналогии категорию и common.js Там все понятно. Там аякс запрос с product_id.

$.ajax({
			url: 'index.php?route=checkout/cart/add',
			type: 'post',
			data: 'product_id=' + product_id + '&quantity=' + (typeof(quantity) != 'undefined' ? quantity : 1),
			dataType: 'json',

Подскажите пжлст или направьте куда копать...

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


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

#product input[type=\'hidden\'] содержит ID товара

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


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

#product input[type=\'hidden\']  - его имя  это product_id, а значение это айди товара

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


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

#product input[type=\'hidden\'] содержит ID товара

Спасибо!

Но я запутываюсь еще больше. Ведь тогда смотрим дальше. Мы передали все в cart/add. Там опции засунули в $option. Из этой переменной мы id товара не доставали. Далее идет строка

$this->cart->add($this->request->post['product_id'], $quantity, $option, $recurring_id)

Тоесть через пост id мы не получили, наш id в $option. Идем в system/library/cart add и там

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 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 " . DB_PREFIX . "cart SET 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 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)) . "'");
		}
	}

Инсертим product_id = '" . (int)$product_id которого и нет-то. Где я что-то упускаю? 

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


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

Всем спасибо! Разобрался. Моя проблема была в непонимании того как работает сам ajax. Когда мы отправляем данные через POST

data: $('#product input[type=\'text\'], #product input[type=\'hidden\'], #product input[type=\'radio\']:checked, #product input[type=\'checkbox\']:checked, #product select, #product textarea'),

они доступны нам под своими именами указанными в этих input-ах. Я же думал, что они только из массива option доступны. Соответственно product_id у нас приходит, так как он указан в hidden

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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