我正在创建一个将数组返回到模板文件的插件。我似乎无法将完整的数组解析为模板文件。
插件function.arraytest
function smarty_function_arraytest($params,Smarty_Internal_Template $template)
{
$x = array("1"=>array("categories"=>"Action"));
return $x
}
模板文件
{arraytest}
结果 阵列
我似乎无法遍历模板文件中的数组。
非常感谢任何帮助。
由于
答案 0 :(得分:5)
smarty函数返回的任何内容都直接输出,.tpl实际上从不获取数组,只是字符串值“Array”。自从我使用Smarty已经有很长一段时间了,所以这可能已经发生了变化,但我相信标准的做法是这样的:
function smarty_function_arraytest($params, $template)
{
// check $params['out'] exists here
$array = array("1"=>array("categories"=>"Action"));
$template->assign($params['out'], $array);
}
然后称之为:
{arraytest out="arraytestValues"}
{foreach from=$arraytestValues key=k item=v}
<p>{$k}: {$v}</p>
{/foreach}
当然,因为你有一个多维数组,你需要循环两次:
{arraytest out="arraytestValues"}
{foreach from=$arraytestValues key=k item=v}
<p>{$k}: {$v}</p>
{foreach from=$v key=sk item=sv}
<p>{$sk}: {$sv}</p>
{/foreach}
{/foreach}
答案 1 :(得分:0)
也许有帮助:
{assign var=arr value=arraytest}
{$arr....}
然后文档: http://www.smarty.net/docsv2/en/language.syntax.variables.tpl