Jos*_*ano 5 php module magento magento-1.7
当我升级Magento时,AheadWorks模块被禁用.
在管理员,系统 - >配置 - >高级 - >上保存时,然后单击保存配置
保存此配置时发生错误:注意:尝试在第135行的MAGENTO_ROOT/app/code/core/Mage/Adminhtml/Model/Config/Data.php中获取非对象的属性
我一直在寻找解决方案,但我一无所获.
http://www.magentocommerce.com/bug-tracking/issue/?issue=13819
如何解决?
Mag*_*cho 13
在第135行附近找到以下代码行app/code/core/Mage/Adminhtml/Model/Config/Data.php:
$backendClass = $fieldConfig->backend_model;
if (!$backendClass) {
$backendClass = 'core/config_data';
}
Run Code Online (Sandbox Code Playgroud)
并将其替换为:
if (isset($fieldConfig->backend_model)) {
$backendClass = $fieldConfig->backend_model;
}
if (!isset($backendClass)) {
$backendClass = 'core/config_data';
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
MagePsyco是正确的,问题在于第135行的代码app/code/core/Mage/Adminhtml/Model/Config/Data.php:
$backendClass = $fieldConfig->backend_model;
if (!$backendClass) {
$backendClass = 'core/config_data';
}
Run Code Online (Sandbox Code Playgroud)
修复MagePsyco的问题在他的回答中表明代码是在循环中执行的.一旦遇到具有后端模型的属性,$ backlendModel变量就不会core/config_data再次重置.因此,例如在"系统配置"屏幕的"系统"页面上,"已安装的货币"属性已定义后端模型,但后续属性未定义.这会导致_afterSave方法Mage_Adminhtml_Model_System_Config_Backend_Locale在所有后续属性上运行(这将失败).
更好的解决方案是此代码的版本可以在1.8 alpha版本中找到:
$backendClass = (isset($fieldConfig->backend_model))? $fieldConfig->backend_model : false;
if (!$backendClass) {
$backendClass = 'core/config_data';
}
Run Code Online (Sandbox Code Playgroud)
这会处理所有null/false/empty问题,并确保$ backendModel变量始终包含有效值.这也表明应该解决问题,并且一旦发布1.8就不需要修补.
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |