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

Opencart 3 не работает перехват события выбора доставки


Recommended Posts

Всем ку.

Пишу модуль для одной службы доставки, для Opencart 2.0 и 2.3 все норм, а вот с 3.0 возникли трудности.

Итак, суть: нужно перехватить событие выбора доставки, и по условию либо вывести эррор, либо продолжить, перейти к выбору оплаты. Как реализовывал в 2.3. Через ocmod правка в файл catalog\view\theme\default\template\checkout\checkout.tpl после строки $('#button-shipping-method').button('loading');

Spoiler

$(document).delegate('#button-shipping-method', 'click', function() {
    $.ajax({
        url: 'index.php?route=checkout/shipping_method/save',
        type: 'post',
        data: $('#collapse-shipping-method input[type=\'radio\']:checked, #collapse-shipping-method textarea'),
        dataType: 'json',
        beforeSend: function() {
        	$('#button-shipping-method').button('loading');
			/*
			тут необходимые действия
			и флаг checkFlag, если false, то reset на кнопку
			*/
			if(!checkFlag) {
				$('#button-shipping-method').button('reset');
				return false;
			}
		},

 

 

Такое прокатывало в 2.0 и 2.3 версиях, но в 3.0 это прокатывает до момента подтверждения выбора оплаты, выбивает ошибку Warning: Payment method required!. 

Судя по методу save , который вызывается после подтверждения выбора оплаты в контроллере checkout\payment_method.php, такая ошибка возвращается в 2-х случаях, либо не ушел в POST payment_method, либо в сессии не существует payment_method (еще такая ошибка может быть связана с геозонами, гугл подсказал, пока я не стал копать в коде, и не понял, что при разных геозонах доставки и оплаты не будет выводиться оплата, если геозоны прописаны в модели)

 

Spoiler

		if (!isset($this->request->post['payment_method'])) {
			$json['error']['warning'] = $this->language->get('error_payment');
		} elseif (!isset($this->session->data['payment_methods'][$this->request->post['payment_method']])) {
			$json['error']['warning'] = $this->language->get('error_payment');
		}

 

 

я работаю в предыдущем куске кода с сессиями, но payment_methods массив я не трогаю совсем и не затираю, плюсом повторюсь, такое работает в 2.0 и 2.3 версиях, в 3.0 ошибается.

Может кто-то сталкивался с подобным, есть какие идеи как победить?

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


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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити...

Important Information

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