2

我正在使用 joomla k2 组件,并且正在基于它构建另一个组件。在这里,我在访问(解析)k2 额外字段时遇到问题。帮助将不胜感激。

数据库中的k2额外字段内容是这样的,

[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]

我搜索了 k2 站点和其他站点并给出了答案,

$this->item->extra_fields[0]->value; //needs to return 500

我尝试了不同的方式,但它不会工作。

4

4 回答 4

3

您可以使用该json_decode()函数将其从 JSON 字符串格式解码为 PHP 对象。

例子:

$JSON = '[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]';

$obj = json_decode($JSON); 

echo $obj[0]->value;
于 2011-05-17T17:43:19.517 回答
2

根据您所在的位置,您使用额外字段的方式可能会发生变化。

在项目视图中 -$this->item->extra_fields[id]->value;

在 K2 内容模块中 -$item->extra_fields[id]->value;

在这两种情况下,您都将 id 替换为您尝试使用的额外字段的相应编号。编号从 0 开始。这些被视为典型的 PHP 变量。您可能想发布一些代码,以便我们可以看到您正在尝试做什么。

于 2011-03-19T17:14:18.183 回答
2

如果您的 extra_fields 值作为字符串(未解析)而不是对象数组返回,则可能是由于配置,因为 extra_fields 是基于它解析(或不解析)的。

//Extra fields
if (($view == 'item' && $item->params->get('itemExtraFields'))
   || ($view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemExtraFields'))
   || ($view == 'itemlist' && $task == 'tag' && $item->params->get('tagItemExtraFields')) 
   || ($view == 'itemlist' && ($task == 'search' || $task == 'date') && $item->params->get('genericItemExtraFields')))
{
    $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields);
}

在类别列表中显示项目时,您可以catItemExtraFields通过编辑类别并在类别列表中的项目视图选项下单击额外字段项目的显示来启用 extra_fields ( )。

在项目视图中,您可以itemExtraFields通过编辑类别并在项目视图选项下单击额外字段项目的显示来启用 extra_fields ( ) 。

这应该在类别项目列表和项目视图中启用 extra_fields 解析。

于 2012-07-18T09:28:52.160 回答
2

试试这个,

$str='[{"id":"1","value":"500"},{"id":"2","value":"40Hrs"},{"id":"3","value":"1"}]';
$vals=json_decode($str);
print_r($vals);

如果要打印 500,

echo $vals[0]->value; //prints 500

或者想循环它,

foreach($val as $v){
  echo $v->value;
}
于 2013-12-21T10:17:39.357 回答