1

我在一家使用 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 中进行了搜索,但是没有找到“学校”搜索的任何结果。

有谁知道这个问题并可以帮助我?

谢谢你。

4

1 回答 1

1

我解决了这个问题。

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

您的代码如下所示:

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);
}
于 2015-08-16T09:03:30.453 回答