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;
}
我所做的,感谢对类似问题的回答:
- Cookie 设置。
- 禁用(所有)模块,一个接一个。通过 xml,管理员后台和删除。还检查了是否有任何更新(没有)。
- 刷新缓存、删除缓存、禁用缓存(会话相同)
- 将 Var 目录、媒体、下载程序以及最终所有文件夹和文件设置为 777。
- 重新设置所有正确的权限,感谢 magento-cleanup.php。
- 检查了错误基础 url 的数据库,安全和不安全。
- 是否完整重写了 app 目录,从干净的 magento 安装上传。
- 检查了服务器设置,没有安全模式(确实有一个 basedir 打开目录)
我也被重定向到后端的 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 文件中所有最近安装的扩展/实施的更改。
希望对您有所帮助。
我一直遇到这个问题: 客户无法在没有致命错误(已启用调试)的情况下注册、登录和注销。
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;
}
我所做的,感谢对类似问题的回答:
- Cookie 设置。
- 禁用(所有)模块,一个接一个。通过 xml,管理员后台和删除。还检查了是否有任何更新(没有)。
- 刷新缓存、删除缓存、禁用缓存(会话相同)
- 将 Var 目录、媒体、下载程序以及最终所有文件夹和文件设置为 777。
- 重新设置所有正确的权限,感谢 magento-cleanup.php。
- 检查了错误基础 url 的数据库,安全和不安全。
- 是否完整重写了 app 目录,从干净的 magento 安装上传。
- 检查了服务器设置,没有安全模式(确实有一个 basedir 打开目录)
我也被重定向到后端的 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 文件中所有最近安装的扩展/实施的更改。
希望对您有所帮助。