如何在智能模板文件中分配数组?

时间:2010-02-11 12:22:24

标签: php smarty

我想知道是否可以将数组分配给Smarty模板文件中的变量?我试过这个

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

但是当我打印出阵列时,它产生了这个:

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

如何阻止Smarty转义数组值?

提前致谢

5 个答案:

答案 0 :(得分:47)

{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

答案 1 :(得分:43)

我刚刚找到另一个答案here,允许您在不使用{php} tags的情况下执行此操作(Smarty推荐)

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

仍然愿意接受更多的想法......

答案 2 :(得分:9)

{$system=['freebsd','windows','macosx','linux']}怎么办?

答案 3 :(得分:0)

$smarty->assign("lat",$lat);

{foreach $lat as $latlongval}
    {assign var="myArray" value=","|explode:$latlongval} 
    {$myArray['0']}
    {$myArray['1']}
{/foreach}

答案 4 :(得分:-1)

在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}