如何在 smarty 模板文件中分配数组?
Posted
技术标签:
【中文标题】如何在 smarty 模板文件中分配数组?【英文标题】:How to assign an array within a smarty template file? 【发布时间】:2011-01-15 16:53:55 【问题描述】:我想知道是否可以将数组分配给 Smarty 模板文件中的变量?这个我试过了
assign var='file' value = array('dir','doc','exe')
但是当我打印出数组时,它会产生:
array(\'dir\',\'doc\',\'exe\')
如何阻止 Smarty 转义数组值?
提前致谢
【问题讨论】:
我已经解决了这个问题,并较早地提出了解决方案。我想出的解决方案是here 【参考方案1】:$smarty->assign("lat",$lat);
foreach $lat as $latlongval
assign var="myArray" value=","|explode:$latlongval
$myArray['0']
$myArray['1']
/foreach
【讨论】:
【参考方案2】:在 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);
聪明:
assign var=colors value=$smarty->arrSam()
$colors|print_r
【讨论】:
【参考方案3】: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 是什么意思呢?你不应该在模板中使用 php 直到它是唯一的选择。 @Jenski 的解决方案很完美 确保不要在最后一个元素后面放置逗号 (,)。我正在从导致语法错误的 php 复制数组。【参考方案4】:$system=['freebsd','windows','macosx','linux']
呢?
【讨论】:
这适用于 Smarty v3:smarty.net/docs/en/language.syntax.variables.tpl【参考方案5】:我刚刚找到了另一个答案 here,它允许您在不使用 php tags 的情况下执行此操作(由 Smarty 推荐)
assign var='icon' value=','|explode:"dir,doc,exe"
尽管如此...
【讨论】:
此方法不允许分配关联数组 +1 - 谢谢。这正是我们需要解决我们黑客的第三方 CMS 中的问题。 对于 smarty 的第 3 版,请参阅 Mituha 的答案。 这正好回答了问题。 有没有可以用来获取空数组的函数?以上是关于如何在 smarty 模板文件中分配数组?的主要内容,如果未能解决你的问题,请参考以下文章