您好我正在使用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);
}
答案 0 :(得分:5)
当源模型现在为某些属性定义时,它可能。 请检查eav_attribute Table source_model字段。某些条目可能有误或缺失。
答案 1 :(得分:4)
转到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);
}
答案 2 :(得分:1)
在system.xml配置文件中
select/multiselect
modulename/namespace_module_model_somemodelname
。
然后创建namespace_module_model_somemodulename文件..
在你自己的模型中写这个toOptionArray()方法(即)这样的东西。
例如:
public function toOptionArray()
{
返回数组(
array('value'=> 1,'label'=> Mage :: helper('newmodule') - > ('Yes')),
array('value'=> 0,'label'=> Mage :: helper('newmodule') - > ('No')),
);
}
假设modulename-> adminhtml / Mage_Adminhtml_Model_System_Config创建此功能。
那么你不应该得到错误......
答案 3 :(得分:1)
就我而言,我通过以下步骤解决了这个问题: -
System -> Tools -> Compilation
)System -> Cache Management
)答案 4 :(得分:0)
检查您的文件权限以及是否正确安装了扩展程序且所有文件都在服务器上,以及是否存在出现此错误的配置字段的backend_model
答案 5 :(得分:0)
我遇到了与主题相同的问题,因为后端的菜单没有唯一命名。在我的例子中,“Magento Theme Bearstore”有菜单条目“themeoptions”,但是名为“themeoptions”的菜单已经存在于德国Magento的m2e模块中!
所以请查看哪个factoryname存在冲突。在我的情况下,我将所有“主题选项”(也是模块名称等)重命名为“bearstoreoptions”(在匹配情况下要小心)。