2014-07-23 16 views
5

Sto ottenendo un json da un'api, come stampare il json utilizzando Smarty.Come stampare un json in Smarty

formato JSON

[ 
    { 
     "first_name": "jinu", 
     "last_name": "mk", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "c964ef415f157ddd99173f5b481ee1e3", 
     "user_type": 1, 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar second", 
     "last_name": "test", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": "3", 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar testing admin", 
     "last_name": "amt 1", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": 1, 
     "last_login_date": null 
    } 
] 

devo stanco seguente foreach ma la sua non stampare nulla.

{foreach from=$games item=foo} 
    <li>{$foo.first_name}</li> 
{/foreach} 

Si prega di aiutarmi a risolvere questo problema. Grazie

risposta

3

Hai 2 possibili soluzioni.

Prima soluzione

in PHP si utilizza:

$data = '[ 
    { 
     "first_name": "jinu", 
     "last_name": "mk", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "c964ef415f157ddd99173f5b481ee1e3", 
     "user_type": 1, 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar second", 
     "last_name": "test", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": "3", 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar testing admin", 
     "last_name": "amt 1", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": 1, 
     "last_login_date": null 
    } 
]'; 


$smarty->assign('games',$data); 

In Smarty si utilizza:

{foreach from=$games|json_decode item=foo} 
    <li>{$foo->first_name}</li> 
{/foreach} 

Tuttavia io non sono sicuro che in questo caso, se viene eseguito su json_decode$games solo una volta o su ogni invocazione.

Seconda soluzione

In PHP si utilizza:

$data = '[ 
    { 
     "first_name": "jinu", 
     "last_name": "mk", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "c964ef415f157ddd99173f5b481ee1e3", 
     "user_type": 1, 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar second", 
     "last_name": "test", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": "3", 
     "last_login_date": null 
    }, 
    { 
     "first_name": "avatar testing admin", 
     "last_name": "amt 1", 
     "loginid": "[email protected]", 
     "timezone": "5.5", 
     "team_id": "ec40f5feda8643135bc20be44f897b03", 
     "user_type": 1, 
     "last_login_date": null 
    } 
]'; 



$smarty->assign('games',json_decode($data)); 

Nel file di Smarty:

{foreach from=$games item=foo} 
    <li>{$foo->first_name}</li> 
{/foreach} 

vi consiglio di usare sempre secondo metodo, perché se possibile in Smarty si dovrebbe evitare utilizzando qualsiasi calcolo e solo visualizzare i dati.

+1

Grazie mille per il vostro aiuto. Mi ha davvero aiutato. – Dibish

+1

@Dibish Prego –

1

Prima di tutto è necessario convertirlo in serie allora sarà molto più facile per voi per scorrere e stampare

dire con hai trovato il tuo JSON in un $ risposta variabile denominata

// Convert to array 
{$response|json_decode} 

vi sarà sempre una matrice ora e scorrere l'array è possibile utilizzando {foreach}

dopo la conversione di gamma sarà più facile per voi a ciclo foreach come il lavoro per il campo e non per l'uscita jSON

2

provare quanto segue:

{foreach from=$games item=foo} 
    {assign var=bar value=$foo|json_decode:1} 
    <li>{$bar.first_name}</li> 
{/foreach}