Domanda

Sto lavorando con il componente Joomla K2 e sto costruendo un altro componente basato su di esso. Qui ho un problema nell'accesso ai campi extra (analisi) K2. L'aiuto sarà apprezzato.

Il contenuto di campo extra K2 nel database è così,

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

Ho cercato il sito K2 e altri e ho dato la risposta come,

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

Ho provato in modi diversi ma non funzionerà.

È stato utile?

Soluzione

Prova questo,

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

Se vuoi stampare 500,

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

o voglio farlo farlo,

foreach($val as $v){
  echo $v->value;
}

Altri suggerimenti

Puoi usare il json_decode() funzione per decodificarlo da un formato stringa JSON a un oggetto PHP.

Esempio:

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

$obj = json_decode($JSON); 

echo $obj[0]->value;

A seconda di dove ti trovi, come usi campi extra possono cambiare.

Nelle visualizzazioni degli articoli - $this->item->extra_fields[id]->value;

Nel modulo di contenuto K2 - $item->extra_fields[id]->value;

In entrambi i casi si sostituiscono l'ID con il numero corrispondente del campo extra che si sta cercando di utilizzare. La numerazione inizia a 0. Questi sono trattati come variabili PHP tipiche. Potresti voler pubblicare un po 'di codice in modo da poter vedere cosa stai cercando di fare.

Se il valore extra_fields viene restituito come stringa (non analizzata) anziché una matrice di oggetti è possibile a causa della configurazione, poiché Extra_fields è analizzato (o no) in base a esso.

//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);
}

Quando si visualizza un elemento in un elenco di categorie, è possibile abilitare extra_fields (catItemExtraFields) modificando la categoria e sotto Visualizza elemento Opzioni negli elenchi di categorie clicca su Mostrare per il Campi extra elemento.

Quando si è in una visualizzazione elemento, è possibile abilitare extra_fields (itemExtraFields) modificando la categoria e sotto Opzioni di visualizzazione dell'articolo clicca su Mostrare per il Campi extra elemento.

Ciò dovrebbe abilitare l'elenco elenco degli elementi degli elementi di categoria e la visualizzazione degli elementi della categoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top