错误: - 在非对象magento上调用成员函数toOptionArray()

时间:2016-03-16 13:29:21

标签: php magento

我在Magento中创建了新的付款方式。我在管理面板中遇到以下错误。 (在非对象上调用成员函数toOptionArray())。我google了最后我得到了不好的解决方案(核心文件中的代码更改)。

 I need to fix the issue without change core file code .
   if(is_object($sourceModel)){
    $optionArray = $sourceModel->toOptionArray($fieldType == 'multiselect');
   } else {
      Mage::log($e->source_model);
   }

1 个答案:

答案 0 :(得分:0)

根据提供的信息,我猜测您缺少系统配置中选择字段的源模型(或者未正确指定此源模型)

首先检查模块的system.xml文件 - 每个选择字段都应指定源模型:

<fields>
    <my_select_field>
        <label>My Label</label>
        <frontend_type>select</frontend_type>
        <source_model>your_models_name/path_to_class</source_model>
        <sort_order>0</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>0</show_in_website>
        <show_in_store>0</show_in_store>
    </my_select_field>
</fields>

其次,检查源模型类是否存在(并且命名正确)。

作为源模型声明和实现的示例,您可以使用&#34; adminhtml / system_config_source_yesno&#34;指向app / code / core / Mage / Adminhtml / Model / System / Config / Source / Yesno.php

注意模型位置在f.e下的config.xml中配置。 global / models / your_models_name / class node

顺便说一句,如果您的选择代表布尔设置,您可以使用&#34; adminhtml / system_config_source_yesno&#34;没有在模块中实现源模型。