致命错误:在Magento管理员的非对象上调用成员函数toOptionArray()

时间:2013-04-17 07:05:33

标签: magento-1.7 fatal-error multi-select shipping sales

当我点击Magento system-> configuration-> SALES标签下的Shipping Methods标签时,我遇到以下错误:

  

致命错误:在D:\ xampp \ htdocs \ magento \ app \ code \ core \ Mage \ Adminhtml \ Block \ System \ Config \ Form.php中的非对象上调用成员函数toOptionArray() 463

最令人震惊的是,这是Magento的全新装置。任何人都可以告诉我如何删除此错误?

6 个答案:

答案 0 :(得分:2)

添加到config.xml

<global>
    <models>
        <stockindicator>
            <class>Namespace_ModuleName_Model</class>
        </stockindicator>
    </models>
</global>

答案 1 :(得分:1)

按照本教程解决问题=&gt; http://kb.magenting.com/content/20/49/en/magento-error-call-to-a-member-function-tooptionarray-on-a-non-object.html

转到Magento Connect Manager,单击“检查升级”。在Actions中,升级具有新版本的模块,然后重新安装这些模块:

  • Interface_Adminhtml_Default
  • Mage_All_Latest
  • Mage_Core_Adminhtml
  • Mage_Core_Modules

选中“成功安装或升级后清除所有会话”,然后单击“提交更改”。

答案 2 :(得分:0)

这应解决错误: -

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

答案 3 :(得分:0)

我遇到了这个问题,现有的答案都没有帮助。经过一些反复试验,我发现我的问题是由于在Windows和Linux上运行之间存在区分大小写问题。

我的widget.xml文件包含以下行:

<source_model>widget/modeoptions</source_model>

我的模型类声明为:

class My_Widget_Model_ModeOptions

当部署在Mirosoft Azure中运行的Magento实例时,这可以正常工作。当我将相同的代码部署到在Linux上运行的Magento实例时,我收到了错误。

Call to a member function toOptionArray() on a non-object in ../includes/src/Mage_Widget_Block_Adminhtml_Widget_Options.php

更新widget.xml以匹配课程&#39;例如,一切都在Windows和Linux服务器上按预期工作。

更新/固定行:

<source_model>widget/ModeOptions</source_model>

希望这可能会帮助其他人解决这个错误。

答案 4 :(得分:0)

根据webshopapps支持,您需要做的就是通过system-&gt; tools-&gt;编译进行编译。我个人编译,刷新缓存,注销并再次登录。有效。

我之前尝试过更新模块方法,并且在打破magento 1.9.0.1之后不得不从备份恢复

答案 5 :(得分:-1)

转到app\code\core\Mage\Adminhtml\Block\System\Config\Form.php

在第463行找到以下内容

$optionArray = $sourceModel->toOptionArray($fieldType == ‘multiselect’);

并将其替换为:

if(is_object($sourceModel)){
$optionArray = $sourceModel->toOptionArray($fieldType == ‘multiselect’);
} else {
Mage::log($e->source_model);
}