Неопределенная константа класса ‘CHECK_USE_CHECKOUT’

Я обновил magento с версии 1.9.1.1 до 1.9.2.1. Процесс оформления заказа всегда терпит неудачу и перенаправляет обратно на страницу корзины. Это ошибка, которую я нашел в журнале ошибок Apache:

PHP Fatal error:  Undefined class constant 'CHECK_USE_CHECKOUT' in
/var/www/app/code/local/Lotusbreath/OneStepCheckout/Model/Type/Onepage.php
on line 108, referer: http://www.websitename.com/onestepcheckout/

Я думал, что расширение проверки было неисправно, поэтому я заменил его на оригинальный шаблон проверки Magento, появляется та же ошибка:

PHP Fatal error:  Undefined class constant 'CHECK_USE_CHECKOUT' in
/var/www/app/code/core/Mage/Checkout/Model/Type/Onepage.php on line 653,
referer: http://www.website.com/checkout/onepage/

Я проверил оба PHP-файла на наличие CHECK_USE_CHECKOUT, и действительно, он там не определен. Вопрос в том, что раньше это нормально работало. Я не уверен, что это обновление что-то сломало или это последнее исправление, которое я применил. Я попытался вернуть патч, но это тоже не сработало.

Это фрагмент из PHP-файла Onepage.php, который содержит материал CHECK_USE:

$data['checks'] = Mage_Payment_Model_Method_Abstract::CHECK_USE_CHECKOUT
| Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_COUNTRY
| Mage_Payment_Model_Method_Abstract::CHECK_USE_FOR_CURRENCY
| Mage_Payment_Model_Method_Abstract::CHECK_ORDER_TOTAL_MIN_MAX
| Mage_Payment_Model_Method_Abstract::CHECK_ZERO_TOTAL;

Это причина, по которой платежи терпят неудачу и перенаправляют обратно на страницу корзины? Если это так, как бы я исправить это?

Заранее спасибо.

1

Решение

Сообщение об ошибке ссылается на этот класс Mage_Payment_Model_Method_Abstract. Я проверил это в основном файле, расположенном по адресу: app / code / core / Mage / Payment / Model / Method / Abstract.php. Этот файл имеет следующий фрагмент в классе Mage_Payment_Model_Method_Abstract:

/**
* Bit masks to specify different payment method checks.
* @see Mage_Payment_Model_Method_Abstract::isApplicableToQuote
*/
const CHECK_USE_FOR_COUNTRY       = 1;
const CHECK_USE_FOR_CURRENCY      = 2;
const CHECK_USE_CHECKOUT          = 4;
const CHECK_USE_FOR_MULTISHIPPING = 8;
const CHECK_USE_INTERNAL          = 16;
const CHECK_ORDER_TOTAL_MIN_MAX   = 32;
const CHECK_RECURRING_PROFILES    = 64;
const CHECK_ZERO_TOTAL            = 128;

Теперь там был еще один файл Abstract.php, расположенный в локальном пуле по адресу: app / code / local / Mage / Payment / Model / Method / Abstract.php. Обратите внимание на (основное) и (локальное) различие в пути.

У этого файла в локальном пуле не было фрагмента, показанного выше. Файл также имел несколько других отличий. Итак, я сделал резервную копию файла Abstract.php в локальном пуле. Затем скопировал файл Abstract из ядра в локальный пул. Все снова заработало.

Надеюсь, это поможет кому-то!

0

Другие решения

Есть вероятность, что ваши основные файлы были изменены.

Во время обновления файлы ядра будут перезаписаны, что может привести к удалению некоторого кода (добавленного из-за нестандартного кодирования).

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

@ Посмотрите на ваши отзывы.
Помещение файла в локальный файл приведет к переопределению основного файла.
Это не стандартный подход Magenton, разработчик должен был расширить этот класс и изменить или добавить какую-то конкретную функцию.

Я предлагаю вам убедиться, что все файлы в локальной папке Mage удалены каким-либо расширенным модулем.

0

По вопросам рекламы [email protected]