我们在购物车页面中遇到致命错误:
致命错误:在
中的非对象上调用成员函数isVirtual()return $this->getConfig()->isEnabled() && !$this->getProduct()->isVirtual();
完整代码:app/code/community/WebDevlopers/ProductPageShipping/Block/Estimate/Abstract.php
<?php
abstract class WebDevlopers_ProductPageShipping_Block_Estimate_Abstract extends Mage_Catalog_Block_Product_Abstract
{
protected $_estimate = null;
protected $_config = null;
protected $_session = null;
protected $_carriers = null;
public function getEstimate()
{
if ($this->_estimate === null) {
$this->_estimate = Mage::getSingleton('webdevlopers_productpageshipping/estimate');
}
return $this->_estimate;
}
public function getConfig()
{
if ($this->_config === null) {
$this->_config = Mage::getSingleton('webdevlopers_productpageshipping/config');
}
return $this->_config;
}
public function getSession()
{
if ($this->_session === null) {
$this->_session = Mage::getSingleton('webdevlopers_productpageshipping/session');
}
return $this->_session;
}
public function isEnabled()
{
return $this->getConfig()->isEnabled() && !$this->getProduct()->isVirtual();
}
}
答案 0 :(得分:1)
由于您的模型从产品模型扩展,getProduct()
方法应该是有效的。您可能在常规Magento产品视图上下文之外使用它,这可能导致此错误。
在尝试使用之前,您应该检查产品是否存在:
return $this->getConfig()->isEnabled() && $this->getProduct() && !$this->getProduct()->isVirtual();
为避免修改社区代码,您应该将此类扩展到本地池并在本地类中进行更改。
我已将a pull request提交到主存储库以便将来修复此问题。这对于经常使用来说是一种无害的改变,所以在那里使用它不会有什么坏处。