2012-05-25 81 views
0
<?php Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('children_count','0'); ?> 

產生於:Magento的1.7:調用一個成員函數getBackend()非對象

Fatal error: Call to a member function getBackend() on a non-object in app\code\core\Mage\Eav\Model\Entity\Abstract.php on line 816 

我缺少什麼?

我上部署未修改的樣本數據1.7安裝

+0

你正在寫一個自定義模塊,或者你在哪裏注意到這個問題? –

+0

我正在寫一個自定義模塊,但你可以把這個代碼放在模板中的任何地方,你應該會得到同樣的錯誤 - 我在未修改的示例數據上部署代碼1.7安裝 – srgb

+0

似乎magento轉到eav_attribute尋找children_count ,找不到它,休息.. – srgb

回答

1

同時安裝樣本數據Magento的和基本的Magento後的代碼,似乎這個代碼只對樣本數據版本產生錯誤,如果沒有啓用平類別。

0

我會給另一種方式來回答你的問題。

問題因爲沒有產品屬性children_count,它可能是您的示例magento站點中不存在的特定屬性。

要開發該部分,最好先檢查該屬性是否存在,然後再添加過濾器,以防止該代碼在大多數magento站點中工作。

檢查屬性存在:

\t /** 
 
\t * Check if attribute exists before add it to product filter 
 
\t */ 
 
\t private function _checkIfAttributeExists ($attribCode) { 
 
\t \t $entity = 'catalog_product'; 
 
\t \t $attr = Mage::getResourceModel('catalog/eav_attribute') 
 
\t \t \t \t \t ->loadByCode($entity, $attribCode); 
 
\t \t 
 
\t \t if ($attr->getId()) { 
 
\t \t  return true; 
 
\t \t } 
 
\t \t 
 
\t \t return false; 
 
\t }

這種方式可以消除胎兒錯誤:

if ($this->_checkIfAttributeExists('children_count')) { 
    Mage::getModel('catalog/category')->getCollection()->addFieldToFilter('children_count','0'); 
} 

這可能幫助別人。

相關問題