Smarty: исправьте недостающие ключи массива - PullRequest
2 голосов
/ 10 августа 2011

Я вызываю API через PHP, который возвращает многомерный массив [ $ myArray ].

Я хочу передать этот массив для использования в моем шаблоне Smarty, но по какой-то причине массив возвращается без ключей первого измерения.

Когда я печатаю_r на $ myArray в PHP, я получаю:

Array ( 
   [success] => 1 
   [errors] => 0 
   [data] => Array ( 
       [0] => Array ( 
                [email] => myemail@email.com
                [id] => hhd77sjr
                [timestamp] => 2011-08-10 16:31:29 
       ) 
   ) 
)

Я назначаю этот массив как: $smarty->assign('my_array',$myArray);

Затем, когда я получаю доступ к my_array в моем шаблоне Smarty через {$my_array|print_r}, я получаю:

1
0
Array ( 
    [0] => Array ( 
       [email] => myemail@email.com
       [id] => hhd77sjr
       [timestamp] => 2011-08-10 16:31:29
    )
)

Что случилось с моими ключами для значений [success], [errors] и [data]? Я только вижу значения. Как я могу получить доступ к этим значениям через что-то вроде: {$my_array.success}?

СПАСИБО за помощь !!

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Не глядя на источник, я предполагаю, что это связано с тем, как Smarty отображает результат print_r().По умолчанию print_r пытается выводить напрямую, но, глядя на документацию PHP:

Если вы хотите захватить выходные данные print_r (), используйте параметр return.Если для этого параметра установлено значение TRUE, print_r () будет возвращать информацию, а не печатать ее.

Источник

Вы, безусловно, должны иметь доступ ко всемзначения обычно, например, {$my_array.success}.

Если вы хотите повторить попытку print_r, попробуйте следующее: {$my_array|print_r:true} (установите для возвращаемого параметра значение true).

0 голосов
/ 10 августа 2011

Если вы искали в Google поиски «smarty array», вы можете найти это:

<ul>
{foreach from=$myArray key=k item=v}
   <li>{$k}: {$v}</li>
{/foreach}
</ul>

http://www.smarty.net/docsv2/en/language.function.foreach

...