未定义的类常量' CHECK_USE_CHECKOUT'

时间:2015-10-23 17:06:12

标签: php magento magento-1.9.2.1

我将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,实际上,它没有在那里定义。问题是,这之前用过的工作正常。我不确定这个更新是否破坏了什么,或者它是我最近应用的修补程序。我试过恢复修补程序,但这也没有用。

这是包含CHECK_USE内容的PHP文件Onepage.php的片段:

$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;

这是付款失败并重定向回购物车页面的原因吗?如果是这样,我将如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您的核心文件有可能被修改。

在升级过程中,核心文件将被覆盖,这可能导致某些代码(由于非标准编码而被添加)被删除。

因此,如果您有备份,那么请搜索缺少该定义的文件。

@看看你的输入。 将文件放在本地将导致核心文件覆盖。 这不是Magenton标准方法,开发人员应该扩展该类并修改或添加一些特定功能。

我建议您确保应该通过某些扩展模块删除本地Mage文件夹中的所有文件。

答案 1 :(得分:0)

错误消息引用了此类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文件从核心复制到本地池。一切都开始了。

希望这对某人有帮助!