如何在Smarty模板文件中分配一个数组?

41
我想知道在Smarty模板文件中是否可以将数组分配给变量?我已经尝试过这样做。
{assign var='file' value = array('dir','doc','exe')}

但是当我打印出数组时,它输出的是这样的:

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

我该如何阻止Smarty转义数组值?


我之前遇到过这个问题,并想出了一个解决方案。我想出的解决方案在这里 - Subash
5个回答

53

1
如果你使用 {php},那么使用 smarty 有什么意义呢?除非没有其他选择,否则不应在模板中使用 {php}。@Jenski 的解决方案是完美的。 - Vipul Hadiya
1
确保最后一个元素后面不要加逗号(,)。我从php中复制了数组,这导致了语法错误。 - rambii
还可以手动将变量分配给模板变量:{php}$this->_tpl_vars['my_array'] = ['var1', 'var2'];{/php} - Robert

45

我刚刚在这里找到了另一个答案它可以让您无需使用{php}标签(Smarty推荐)就可以实现这一点。

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

不过仍然开放接受更多想法...


2
该方法不允许分配关联数组。 - Kirzilla
+1 - 谢谢。这正是我们需要解决第三方CMS中问题的方法。 - Michael Moussa
对于Smarty的第三个版本,请参见Mituha的回答。 - Andy
这个回答精确地回答了问题所问的内容。 - Yugal Jindle
有没有函数可以用来获取空数组? - Jānis Elmeris

9

那么关于 {$system=['freebsd','windows','macosx','linux']} 呢?


1
这在Smarty v3中有效:http://www.smarty.net/docs/en/language.syntax.variables.tpl - Andy

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

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

0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接