2

您好,我正在使用 magento 1.7.0.2,如果我在进行配置时尝试安装扩展程序(个人栏),则会出现以下错误:

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

第 463 行:$optionArray = $sourceModel->toOptionArray($fieldType == 'multiselect');

你能帮帮我吗?

                    $sourceModel = Mage::getSingleton($factoryName);
                if ($sourceModel instanceof Varien_Object) {
                    $sourceModel->setPath($path);
                }
                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);
            }
4

6 回答 6

5

转到 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);
}
于 2013-08-19T14:26:59.803 回答
4

当源模型现在为某些属性定义时,它是可能的。请检查 eav_attribute 表 source_model 字段。某些条目可能错误或丢失。

于 2013-04-25T06:37:48.380 回答
1

在 system.xml 配置文件
select/multiselect
modulename/namespace_module_model_somemodelname中。
然后创建 namespace_module_model_somemodulename 文件.. 在你自己的模型中写这个 toOptionArray() 方法(即)类似这样的东西..
例如: public function toOptionArray()
{ return array( array('value' => 1, 'label'=>Mage ::helper('newmodule')-> ('Yes')), array('value' => 0, 'label'=>Mage::helper('newmodule')-> ('No')), ) ; } 假设 modulename->adminhtml/Mage_Adminhtml_Model_System_Config 创建这个函数。那么你不应该得到错误......

于 2013-04-25T07:39:08.563 回答
1

就我而言,我通过以下步骤解决了它:-

  1. 禁用编译( System -> Tools -> Compilation)
  2. 刷新缓存( System -> Cache Management)
于 2016-06-09T11:52:12.940 回答
0

我在主题上遇到了同样的问题,因为后端的菜单没有唯一命名。在我的例子中,“Magento Theme Bearstore”有菜单项“themeoptions”,但在德国 Magento 的 m2e 模块中已经存在一个名为“themeoptions”的菜单!

因此,请检查哪个工厂名称有冲突。就我而言,我将所有“themeoptions”(还有模块名称等)重命名为“bearstoreoptions”(在匹配情况下要小心)。

于 2014-10-19T09:00:34.557 回答
0

检查您的文件权限,是否正确安装了扩展并且所有文件都在服务器上,以及是否存在给出此错误的配置字段的 backend_model

于 2013-04-25T06:37:43.647 回答