Как найти источник ошибок этапа оформления заказа?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

27.01.2011 09:32

При оформлении заказа (checkout) могут возникать программные сбои, которые сложно поддаются диагностике.
Например, Magento может не переходить на следующий шаг оформления заказа, в то же время не указывая причину сбоя и не оставаляя записей в своих журналах.

Чтобы провести диагностику подобных ситуаций, примените (временно) две заплатки к программному коду:


1)
Найдите метод test класса Validation (в файле js/prototype/validation.js)
Это длинный метод примерно следующего вида:

test : function(name, elm, useTitle) {
	var v = Validation.get(name);
	var prop = '__advice'+name.camelize();
	try {
	if(Validation.isVisible(elm) && !v.test($F(elm), elm)) {
		...
	} else {
		...
	}
	} catch(e) {
		throw(e)
	}



Добавите в блок catch дополнительную диагностику:
test : function(name, elm, useTitle) {
	var v = Validation.get(name);
	var prop = '__advice'+name.camelize();
	try {
	if(Validation.isVisible(elm) && !v.test($F(elm), elm)) {
		...
	} else {
		...
	}
	} catch(e) {
		alert ("exception: " + e.message);
		alert (e.stack.toString ());	
		throw(e)
	}


2)
Найдите метод nextStep класса Checkout (в файле skin/frontend/base/default/js/opcheckout.js)
Найдите там блок:

var msg = response.error_messages;
if (typeof(msg)=='object') {
	msg = msg.join("\n");
}
alert(msg);


добавьте после него:

alert (transport.responseText);


Не забывайте, что программный код на JavaScript активно кешируется браузерами, поэтому просто обновить файлы недостаточно - надо дополнительно очистить кеш браузера от старого кода.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

26.02.2012 11:23

Зачастую более простым способом будет анализ посредством Firebug асинхронных ответов сервера.

Поделиться темой: