2012-06-05 60 views
0

,当我尝试访问系统>配置>高级我得到这个错误>系统Magento管理>系统>配置>高级>系统 - 致命错误

致命错误:调用一个非成员函数toOptionArray() -object在/home/server/public_html/store/app/code/core/Mage/Adminhtml/Block/System/Config/Form.php上线421

我发现了这样的回答:Fatal error: Call to a member function toOptionArray()

然而,根据该答案需要替换的代码与该文件中的代码(Form.php)不同:

  if ($method) { 
       if ($fieldType == 'multiselect') { 
        $optionArray = $sourceModel->$method(); 
       } else { 
        $optionArray = array(); 
        foreach ($sourceModel->$method() as $value => $label) { 
         $optionArray[] = array('label' => $label, 'value' => $value); 
        } 
       } 
      } else { 
       $optionArray = $sourceModel->toOptionArray($fieldType == 'multiselect'); 
      } 
      $field->setValues($optionArray); 
     } 
    } 
} 
return $this; 

任何想法?谢谢!

+0

你有最近增加了一个模块或已经工作在安装你自己的模块?通常,上述错误来自下拉数组中的fubar'd代码。打开所有日志记录,将Magento置于开发人员模式,并且您应该在异常日志中收到一条消息,告诉您哪个数组已被破坏。 –

回答

0

如果你在Form.php中从398行到425行,你几乎有相同的代码。从你的回答中的代码是不是一个解决方法,只是一种方式来帮助你确定你真正的问题,所以你可以使用该代码:

if(is_object($sourceModel)){ 
    $field->setValues($sourceModel->toOptionArray($fieldType == 'multiselect')); 
} else { 
    Mage::log($e->source_model); 
} 

然后,你就必须寻找到Magento的日志文件看看发生了什么。你也可以尝试登录debug_print_backtrace(); 也许你的问题来自一个严重的书面扩展。

+0

好的,谢谢,我会给它一个镜头。 – lividcreature

+0

真正的解决方案是找出造成该错误的模块。尝试一次禁用一个,直到你不会有这个错误。另外,请查看您的日志文件以获取更多信息。 – Ovidiu

0

应按以下步骤解决错误: -

  1. 禁用编译System -> Tools -> Compilation
  2. 刷新缓存System -> Cache Management
+1

请不要对多个问题添加相同的答案。回答最好的一个,并将其余标记为重复。请参阅[是否可以为几个问题添加重复答案?](http://meta.stackexchange.com/q/104227) –

+0

感谢@BhargavRao的信息。将遵循指导原则。 –

相关问题