2012-12-13 58 views
1

我试着加载在我的后端组件默认视图自定义字段(如default.php):的Joomla 2.5将自定义字段布局致命错误

JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields'); 
$productType = JFormHelper::loadFieldType('ProductType',false); 

$productTypeOptions = $productType->getOptions(); 

,但我得到一个致命的错误:

Fatal error: Call to a member function children() on a non-object in xxx\libraries\joomla\form\fields\list.php on line 89 

当我将这个自定义字段加载到表单中时,一切都很完美。

任何想法?

+0

您需要将字段类型放在'JFormHelper :: loadFieldType'中,而不是字段名称 – Toretto

+0

@Tornado:我将放置字段类型。 ProductType是字段类型: protected $ type ='ProductType'; – Bounce

回答

1

确保您添加的正确路径领域

+0

我修改了include路径为: JFormHelper :: addFieldPath(JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'fields'); 但我确实得到了同样的错误。 – Bounce

0

在你$productType->getOptions()功能, 尝试删除:
$options = array_merge(parent::getOptions(), $options);

+0

也许你应该多解释一下,而不只是粘贴代码。 – partlov

0

嗯,我试图扩大我的同胞上述想法,但它似乎是一个不合格的编辑,我把它放在这里然后:

这对我有效。在你的getOptions中,如果你有类似在这里找到的getOptions(http://docs.joomla.org/How_to_add_custom_filters_to_component_admin),你会得到这一行:

$ options = array_merge(parent :: getOptions(),$ options);

这是造成错误的那个。为什么?那么,我不确定。如果你看到了相关的文件,您可满足这一点:

的foreach($这个 - >元素 - >儿童()为$选项)

所以问题是,你在呼唤孩子()看起来没有初始化的父模型。为什么需要array_merge?这里讨论(http://forum.joomla.org/viewtopic.php?f=626&t=782877

我的解释更像是一个肮脏的补丁,但希望它有助于前进。