Как назначить массив в файле шаблона smarty?
Мне было интересно, можно ли присвоить массив переменной в файле шаблона Smarty? Я пробовал это
{assign var='file' value = array('dir','doc','exe')}
Но когда я распечатываю массив, он производит это:
array(\'dir\',\'doc\',\'exe\')
Как я могу остановить Smarty, экранируя значения массива?
заранее спасибо
5 ответов
{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
Я только что нашел другой ответ, который позволяет вам делать это без использования тегов {php} (рекомендуется Smarty)
{assign var='icon' value=','|explode:"dir,doc,exe"}
все еще открыт для новых идей, хотя...
$smarty->assign("lat",$lat);
{foreach $lat as $latlongval}
{assign var="myArray" value=","|explode:$latlongval}
{$myArray['0']}
{$myArray['1']}
{/foreach}
Неправильный способ написать код в файле шаблона 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}