2

Magentoのインストールを1.4.1.0から1.7.0.2にアップグレードしました。カテゴリを編集しようとするとエラーが発生します。

エラーは次のように述べています。

Fatal error: Call to a member function getAttributeCode() on a non-object in /home/.../domains/.../public_html/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php on line 137

同じ問題についてフォーラムでいくつかのトピックを見つけましたが、解決策はありませんでした。ここでも解決策を見つけることができませんでした。

古いバージョンのAttributes.phpと新しいバージョンを比較すると、唯一の違いはこのコードブロック(132行目から145行目)です。

    if ($this->getCategory()->getLevel() == 1) {
        $fieldset->removeField('custom_use_parent_settings');
    } else {
        if ($this->getCategory()->getCustomUseParentSettings()) {
            foreach ($this->getCategory()->getDesignAttributes() as $attribute) {
                if ($element = $form->getElement($attribute->getAttributeCode())) {
                    $element->setDisabled(true);
                }
            }
        }
        if ($element = $form->getElement('custom_use_parent_settings')) {
            $element->setData('onchange', 'onCustomUseParentChanged(this)');
        }
    }

このブロック全体をコメントアウトすると、すべてが正常に機能しているようです。しかし、より良い修正はありますか?私は実際にはこのコードブロックの目的を理解していません。

4

2 に答える 2

3

これの意味は

 $attribute->getAttributeCode(); // referring to invalid attribute ( object )

古いデータベースのカテゴリに割り当てられた属性があり、これを移行しませんでした

catalog_categoryエンティティ(1.7インストールではID 3と見なされます)に割り当てられた古い属性と、移行後の新しいデータベースからも検索します

SELECT *
FROM `eav_attribute`
WHERE `entity_type_id` = '3'

次に、古いデータベースと新しいデータベースの結果を比較します

于 2013-03-20T11:03:16.690 に答える
1
if ($element = $form->getElement($attribute->getAttributeCode())) {
    $element->setDisabled(true);    
}

に置き換える

if ($element = $form->getElement($attribute)) {
    $element->setDisabled(true);                           
}
于 2014-02-18T23:24:20.143 に答える