【问题标题】:Joomla 2.5 Load custom field in components layout fatal errorJoomla 2.5 在组件布局中加载自定义字段致命错误
【发布时间】:2012-12-01 10:39:39
【问题描述】:

我正在尝试在我的后端组件默认视图 (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

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

有什么想法吗?

【问题讨论】:

  • 您需要将字段类型放入JFormHelper::loadFieldType 而不是字段名称
  • @Tornado:我输入字段类型。 ProductType 是字段类型:protected $type = 'ProductType';

标签: joomla joomla2.5


【解决方案1】:

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

【讨论】:

  • 我将包含路径修改为:JFormHelper::addFieldPath(JPATH_COMPONENT_ADMINISTRATOR.DS.'models'.DS.'fields');但我确实遇到了同样的错误。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    这对我有用。在您的 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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 2014-03-21
      相关资源
      最近更新 更多