1

我试图在我的后端组件默认视图(default.php)中加载自定义字段:

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

当我将此自定义字段加载到表单中时,一切正常。

有任何想法吗?

4

3 回答 3

1

确保向字段添加正确的路径

于 2012-12-13T21:53:00.753 回答
0

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

于 2013-02-12T09:42:26.437 回答
0

好吧,我试图扩展我的伙伴上述想法,但它似乎是一个不恰当的编辑,然后我把它放在这里:

这对我有用。在您的 getOptions 中,如果您有类似此处找到的 getOptions ( http://docs.joomla.org/How_to_add_custom_filters_to_component_admin ),您将拥有这一行:

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

这是导致错误的原因。为什么?好吧,我不确定。如果您看到相关文件,您会发现:

foreach ($this->element->children() as $option)

所以问题是你在模型父级上调用 children() 似乎没有初始化。为什么需要array_merge?在这里讨论(http://forum.joomla.org/viewtopic.php?f=626&t=782877

我的解释更像是一个肮脏的盲区,但希望它有助于向前发展。

于 2013-03-21T10:31:55.423 回答