MagePsyco是正確的,問題是用代碼在行app/code/core/Mage/Adminhtml/Model/Config/Data.php
135:
$backendClass = $fieldConfig->backend_model;
if (!$backendClass) {
$backendClass = 'core/config_data';
}
與修復MagePsyco建議在他的回答的問題是,該代碼是在一個循環中執行。一旦遇到具有後端模型的屬性,$ backlendModel變量不會再次重置爲core/config_data
。因此,例如在「系統配置」屏幕的「系統」頁面上,「已安裝的貨幣」屬性具有已定義的後端模型,但後續屬性不會。這會導致從Mage_Adminhtml_Model_System_Config_Backend_Locale
的_afterSave方法在所有後續屬性上運行(這將失敗)。
更好的解決方案是該代碼的版本,可以在1.8 alpha版本中找到:
$backendClass = (isset($fieldConfig->backend_model))? $fieldConfig->backend_model : false;
if (!$backendClass) {
$backendClass = 'core/config_data';
}
這需要所有的空/假/空問題的關心和確保$ backendModel變量總是包含一個有效的值。這也表明該問題應該得到解決,1.8版發佈後不需要修補。
謝謝MagePsycho。有用! –
謝謝,它工作完美.. –