How to assign an array within a smarty template file?

两盒软妹~` 提交于 2019-11-27 02:02:26

问题


I was wondering if it was possible to assign an array to a variable within a Smarty template file? I have tried this

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

But when I print out the array it produces this:

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

How can I stop Smarty escaping the array values?

Thanks in advance


回答1:


{php}
  $this->assign("array", array('dir','doc','exe'));
{/php}

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

From Smarty v.3 new syntax is available

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

see for more details : http://www.smarty.net/docs/en/language.syntax.variables.tpl




回答2:


I just found another answer here that allows you to do this without the use of {php} tags (recommended by Smarty)

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

still open to more ideas though...




回答3:


what about {$system=['freebsd','windows','macosx','linux']}?




回答4:


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

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



回答5:


its not right way to write a code with in smarty template file. you should create a array in php and then get the values from 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}


来源:https://stackoverflow.com/questions/2244319/how-to-assign-an-array-within-a-smarty-template-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!