我将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;
这是付款失败并重定向回购物车页面的原因吗?如果是这样,我将如何解决这个问题?
提前致谢。
答案 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文件从核心复制到本地池。一切都开始了。
希望这对某人有帮助!