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 に答える