2014-07-23 15 views
5

Otrzymuję json z api, jak wydrukować json za pomocą Smarty.Jak wydrukować json w Smarty

formacie 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 
    } 
] 

mam zmęczony następujące foreach ale jego nic nie drukuje.

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

Proszę mi pomóc rozwiązać ten problem. Dzięki

Odpowiedz

3

Masz 2 możliwe rozwiązania.

pierwsze rozwiązanie

w PHP użyć:

$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); 

W Smarty użyć:

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

Jednak nie jestem pewien, w tym przypadku, jeśli jest prowadzony na json_decode$games tylko raz lub przy każdym wywołaniu.

drugie rozwiązanie

W PHP użyć:

$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)); 

W pliku Smarty:

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

zawsze zalecamy użycie drugiej metody, ponieważ jeśli to możliwe w Smarty należy unikać używając dowolnych obliczeń i po prostu wyświetlaj dane.

+1

Dziękuję bardzo za pomoc. To naprawdę mi pomogło. – Dibish

+1

@Dibish Nie ma za co –

1

Przede wszystkim trzeba go przekonwertować do tablicy to będzie dużo łatwiejsze do pętli i wydrukować

powiedzieć otrzymujesz swój json w zmiennej o nazwie $ odpowiedzi

// Convert to array 
{$response|json_decode} 

będzie coraz tablicę i teraz można pętli tablicy przy użyciu {foreach}

Po konwersji do tablicy łatwiej będzie dla ciebie jak do pętli foreach dla tablicy pracy, a nie do wyjścia json

2

Spróbuj wykonać następujące czynności:

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