4

Magento をアップグレードすると、AheadWorks モジュールが無効になりました。

管理者に保存する場合、[システム] -> [構成] -> [詳細設定] -> [構成の保存] をクリックします。

この構成の保存中にエラーが発生しました: 注意: 135 行目の MAGENTO_ROOT/app/code/core/Mage/Adminhtml/Model/Config/Data.php の非オブジェクトのプロパティを取得しようとしています

解決策を見つけるために何度も検索してきましたが、何も得られませんでした。

http://www.magentocommerce.com/bug-tracking/issue/?issue=13819

それを修正する方法は?

4

3 に答える 3

13

の 135 行目付近にある次のコード行を見つけますapp/code/core/Mage/Adminhtml/Model/Config/Data.php

$backendClass = $fieldConfig->backend_model;
if (!$backendClass) {
    $backendClass = 'core/config_data';
}

そしてそれを次のように置き換えます:

if (isset($fieldConfig->backend_model)) {
    $backendClass = $fieldConfig->backend_model;
}
if (!isset($backendClass)) {
    $backendClass = 'core/config_data';
}

お役に立てれば。

于 2012-10-10T09:59:09.177 に答える
5

MagePsyco は正しいです。問題は の 135 行目のコードにありますapp/code/core/Mage/Adminhtml/Model/Config/Data.php

$backendClass = $fieldConfig->backend_model;
if (!$backendClass) {
    $backendClass = 'core/config_data';
}

MagePsyco が彼の回答で示唆している修正の問題は、コードがループで実行されることです。バックエンド モデルを持つ属性に遭遇すると、$backlendModel 変数はcore/config_data再びリセットされません。たとえば、[システム構成] 画面の [システム] ページでは、[インストールされた通貨] 属性にはバックエンド モデルが定義されていますが、後続の属性には定義されていません。これにより、_afterSave メソッドMage_Adminhtml_Model_System_Config_Backend_Localeが後続のすべての属性に対して実行されます (失敗します)。

より良い解決策は、1.8 アルファ リリースにあるこのコードのバージョンです。

$backendClass = (isset($fieldConfig->backend_model))? $fieldConfig->backend_model : false;
if (!$backendClass) {
    $backendClass = 'core/config_data';
}

これにより、すべての null/false/empty 問題が処理され、$backendModel 変数に常に有効な値が含まれるようになります。これは、1.8 がリリースされたら、問題を解決する必要があり、パッチを適用する必要がないことも示唆しています。

于 2013-05-14T04:25:37.663 に答える
2

Magento の開発者モードをオフにすることもできます。私はコアを変更する (または拡張する必要がある) ことはあまり好きではないので、怠惰な人にとっては、MAGE_IS_DEVELOPER_MODE修正されるまで必要に応じて無効化/有効化するのが最も簡単な解決策です。

于 2012-12-03T17:23:20.307 に答える