2015-01-21 6 views

ответ

1

Использование вложенного массива.

{foreach from=$test key=key item=item} 
    {foreach from=$item key=k item=i} 
     {$k}: {$i} {* returns 'column_name: value' *} 
    {/foreach} 
{/foreach} 
+0

Это было! благодаря – tdjfdjdj

0

Попробуйте это будет работать:

{section name=item loop=$test} 
{$test[item].column_name} 
{/section} 
0

Smarty просто язык шаблонов. Он не знает (и это неважно) о базах данных, именах полей и т. Д. Вы используете свой метод assign() в код PHP, чтобы сообщить ему о некоторых данных, используя имя, которое вы предоставляете. Подумайте о таких данных, как template variable. Затем вы используете функции языка шаблонов для форматирования и отображения данных, заданных в переменных шаблона в коде PHP. Это зависит от вас, какие данные вы передаете от кода к шаблону и как вы организуете эти данные.

Прочитайте абзац выше снова и снова, пока не найдете ответ на свой вопрос.

Ответ очень прост: если имена полей включены в структуру данных, которая была assign() -ed до Smarty, то у вас есть их в шаблоне для отображения.

Иногда они являются ключами массивов, которые вы показываете; в других случаях вы помещаете их в другую переменную; это зависит. Используйте print_r() перед назначением переменной Smarty, чтобы узнать о ее структуре и узнать, как ее использовать в шаблоне.

Пример:

PHP Код:

$resultset = $db->query("SELECT id, username, email FROM users WHERE username = 'foo'"); 
$row = $resultset->fetchAssoc(); 

$smarty->assign('userInfo', $row); 
// For debug purposes only; remove it after first use 
print_r($row); 

Выход print_r($row);:

Array 
(
    [id] => 1001 
    [username] => 'foo' 
    [email] => '[email protected]' 
) 

Шаблон:

<ul> 
{foreach from=userInfo key=field item=value} 
    <li><b>{$field}</b>: {$value}</li> 
{/foreach} 
</ul> 

Выход в браузере (вид):

  • ID: 1001
  • имя пользователя: Foo
  • электронной: [email protected]
Смежные вопросы