разбирать Joomla K2 дополнительные поля данных - PullRequest
2 голосов
/ 19 марта 2011

Я работаю с компонентом joomla k2 и создаю другой компонент на его основе.Здесь у меня проблема с доступом (разбора) к2 дополнительных полей.Буду признателен за помощь.

Содержимое дополнительного поля 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 ]

3 голосов
/ 17 мая 2011

Вы можете использовать функцию 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;
2 голосов
/ 21 декабря 2013

Попробуйте,

$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;
}
2 голосов
/ 18 июля 2012

Если ваше значение 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), отредактировав категорию и выбрав Параметры просмотра элементов в списках категорий нажмите Показать для Дополнительные поля элемент.

В представлении элемента можно включить дополнительные поля (itemExtraFields), отредактировав категорию и в разделе Параметры представления элемента нажмите Показать для элемента Extra Fields .

Это должно включить синтаксический анализ extra_fields в списке элементов категории и представлении элемента.

2 голосов
/ 19 марта 2011

В зависимости от того, где вы находитесь, способ использования дополнительных полей может меняться.

В просмотрах товара - $this->item->extra_fields[id]->value;

В модуле контента K2 - $item->extra_fields[id]->value;

В обоих случаях вы заменяете идентификатор на соответствующий номер дополнительного поля, которое вы пытаетесь использовать. Нумерация начинается с 0. Они рассматриваются как типичные переменные PHP. Возможно, вы захотите опубликовать некоторый код, чтобы мы могли видеть, что вы пытаетесь сделать.

...