setCustomerid() 致命错误 Magento 1.9.2.1

setCustomerid() Fatal error Magento 1.9.2.1

我一直遇到这个问题: 客户无法在没有致命错误(已启用调试)的情况下注册、登录和注销。

Fatal error: Call to a member function setCustomerId() on a non-object in ../public_html/app/code/core/Mage/Reports/Model/Product/Index/Abstract.php on line 169

这是第 161 - 180 行的代码片段:

 /**
 * Calculate count of product index items cache
 *
 * @return Mage_Reports_Model_Product_Index_Abstract
 */
public function calculate()
{
    $collection = $this->getCollection()
        ->setCustomerId($this->getCustomerId())
        ->addIndexFilter();


    Mage::getSingleton('catalog/product_visibility')
        ->addVisibleInSiteFilterToCollection($collection);

    $count = $collection->getSize();
    $this->_getSession()->setData($this->_countCacheKey, $count);
    return $this;
}

我所做的,感谢对类似问题的回答:

我也被重定向到后端的 404 页面。正确登录后使用 NoRoute URL。我确实看到并且可以使用后端中的所有内容,包括导航菜单。

我确实使用了模板和一些插件/模块的定制。核心文件中没有编码。不确定需要什么信息,所以请问我是否必须提及一些事情。

经过8小时的挣扎,我完全迷失了。希望这是你能帮助我的事情。

只需调试并检查此方法中返回的内容:

1) get_class($this)

2) get_class($this->getCollection())

在您的情况下,错误的含义如下:当前模型没有设置资源模型。代码正在尝试访问集合,但无法访问,因为没有所需的资源模型、资源模型的名称或与此名称对应的 class。

根据调用集合的调试判断,您有:

a) 工厂和 xml 的问题(很可能是某些扩展的 config.xml)。在这种情况下,您应该调试 core/config 模型的方法 _getResourceModelFactoryClassName。

https://www.gyazo.com/e7c8ebb26326ce2f1a3c7c26b43812ea

b) 以下 class 不存在:Mage_Reports_Model_Resource_Product_Index_Compared_Collection

https://www.gyazo.com/9c59119fe4b97889cb81d2e8980b55fa

您可以在模型的 getModelInstance 方法中检查。请注意,在通过 echo/var_dump 进行调试时,您将无法获得良好的结果,因为这些方法通常会被不同的模型随处调用。

我宁愿建议您从检查是否存在以下内容开始 class: Mage_Reports_Model_Resource_Product_Index_Compared_Collection (app/code/core/mage/reports/model/resource/product/index/compared/collection.php)。

接下来,我将检查 (Mage_Reports) 扩展中是否存在模型重写 + 检查这些模块的 config.xml 文件中所有最近安装的扩展/实施的更改。

希望对您有所帮助。