Magento CE18:无法保存新密码,也无法使用信用卡下订单


Magento CE18: Cannot save new password nor place order using credit card

每当我试图更改密码或在我们的网站下测试订单时,我一直在获得"验证类未从basename 'NotEmpty'错误中找到"。当我检查error_log时,我看到以下错误,但我不知道它是什么意思…

PHP Fatal error:  Call to undefined method Mage_Catalog_Model_Resource_Category_Flat_Collection::getAllIdsSql() in /public_html/app/code/core/Mage/Catalog/Model/Resource/Category/Tree.php on line 295

有人知道吗?

这是一个Magento的bug。

如果没有平面表,Mage::getModel('catalog/category')->getCollection()将返回一个Mage_Catalog_Model_Resource_Category_Collection对象,该对象从具有getAllIdsSql()方法的Mage_Eav_Model_Entity_Collection_Abstract扩展而来。

但是,如果启用了平面表,那么集合将是一个不继承getAllIdsSql()方法的Mage_Catalog_Model_Resource_Category_Flat_Collection,从而导致您看到的错误。

http://www.magentocommerce.com/bug-tracking/issue/index/id/68

如果你有企业支持,联系他们,他们会提供一个补丁。

编辑:

有补丁:https://gist.github.com/piotrekkaminski/25db530371b900d0d969

此错误已在Magento社区版1.9.1.0版本中修复。我建议将您的Magento安装升级到最新版本,其中还包括几个安全补丁,因为修改核心通常被认为是不好的做法,并且最终会导致将来不容易识别和修复的问题。