Как назначить массив в файле шаблона smarty? - PullRequest
37 голосов
/ 11 февраля 2010

Мне было интересно, можно ли присвоить массив переменной в файле шаблона Smarty? Я пробовал это

{assign var='file' value = array('dir','doc','exe')}

Но когда я распечатываю массив, он выдает следующее:

array(\'dir\',\'doc\',\'exe\') 

Как мне остановить Smarty, экранируя значения массива?

Заранее спасибо

Ответы [ 5 ]

47 голосов
/ 11 февраля 2010
{php}
  $this->assign("array", array('dir','doc','exe'));
{/php}

{foreach from=$array item=item}
  {$item}
{/foreach}

С Smarty v.3 доступен новый синтаксис

{$array = ['item1','item2',$item3]}

см. Подробнее: http://www.smarty.net/docs/en/language.syntax.variables.tpl

43 голосов
/ 11 февраля 2010

Я только что нашел другой ответ здесь , который позволяет вам сделать это без использования {php} тегов (рекомендуется Smarty)

{assign var='icon' value=','|explode:"dir,doc,exe"}

все еще открыт для новых идей ...

9 голосов
/ 22 марта 2012

а как же {$system=['freebsd','windows','macosx','linux']}?

0 голосов
/ 02 сентября 2013
$smarty->assign("lat",$lat);

{foreach $lat as $latlongval}
    {assign var="myArray" value=","|explode:$latlongval} 
    {$myArray['0']}
    {$myArray['1']}
{/foreach}
0 голосов
/ 17 декабря 2012

это неправильный способ написать код в файле шаблона smarty. Вы должны создать массив в php, а затем получить значения из smarty.

This is the right way to create a standard development code. like.

PHP:

public function arrSam(){
    $colors = array( 0 => '#1f1f1f', 1 => '#696969', 2 => '#878787', 3 => '#b4b4b4', 4 => '#d2d2d2', 5 => '#f0f0f0', 6 => '#ffffff');
    $smarty->assign('colors', $colors);
}

Smarty:

{assign var=colors value=$smarty->arrSam()}
{$colors|print_r}
...