2012-08-10 195 views
1

我正在使用Magento的商店中工作,但我遇到了一個大問題,但我不知道什麼是錯誤的。當我做點擊在管理區「管理客戶」,它讓我看到以下錯誤:管理區域內「管理客戶」頁面上的Magento問題

Fatal error: Call to a member function getBackend() on a non-object in /home/opositivo/developositivo/public_html/pinklemon/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php on line 516 

圍繞該行的代碼是:

foreach ($attribute as $attributeItem) { 
     if (isset($this->_staticFields[$attributeItem])) { 
       $attrField = sprintf('e.%s', $attributeItem); 
     } else { 
       $attributeInstance = $this->getAttribute($attributeItem); 

       if ($attributeInstance->getBackend()->isStatic()) { 
         $attrField = 'e.' . $attributeItem; 
       } else { 
         $this->_addAttributeJoin($attributeItem, 'left'); 
         $attrField = $this->_getAttributeFieldName($attributeItem); 
       } 
     } 

     $fullExpression = str_replace('{{attribute}}', $attrField, $fullExpression); 
     $fullExpression = str_replace('{{' . $attributeItem . '}}', $attrField, $fullExpression); 
} 

且行516:

if ($attributeInstance->getBackend()->isStatic()) { 

這看起來是一個「getBackend()」函數的問題。在測試過程中,我看到以下報告錯誤:

a:5:{i:0;s:34:"Invalid attribute name: school";i:1;s:5727:"#0 /home/opositivo/developositivo/public_html/pinklemon/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php(1294): Mage::exception('Mage_Eav', 'Inv??lido nome ...') 

我在magento db內搜索過,但沒有找到任何「學校」搜索結果。

有沒有人知道這個問題,並可以幫助我?

謝謝。

回答

1

我解決了這個問題。

前516行添加if (!$attrInstance) return true;

你的代碼應該是這樣的:

foreach ($attribute as $attributeItem) { 
     if (isset($this->_staticFields[$attributeItem])) { 
       $attrField = sprintf('e.%s', $attributeItem); 
     } else { 
       $attributeInstance = $this->getAttribute($attributeItem); 

/** Add this line in code to solve the problem **/ 
      if (!$attrInstance) return true; 


       if ($attributeInstance->getBackend()->isStatic()) { 
         $attrField = 'e.' . $attributeItem; 
       } else { 
         $this->_addAttributeJoin($attributeItem, 'left'); 
         $attrField = $this->_getAttributeFieldName($attributeItem); 
       } 
     } 

     $fullExpression = str_replace('{{attribute}}', $attrField, $fullExpression); 
     $fullExpression = str_replace('{{' . $attributeItem . '}}', $attrField, $fullExpression); 
}