我在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);
}
答案 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;没有在模块中实现源模型。