2012-02-27 72 views
3

我正在创建一个插件,该模板文件返回一个数组。我似乎无法得到完整的数组解析到模板文件。smarty插件返回数组

插件function.arraytest

function smarty_function_arraytest($params,Smarty_Internal_Template $template) 
{ 
    $x = array("1"=>array("categories"=>"Action")); 
    return $x 
} 

模板文件

{arraytest} 

结果 阵列

我似乎无法通过在模板文件中的数组进行迭代。

任何帮助将非常感激。由智者函数返回

感谢

回答

4

得到任何直接输出,在.tpl实际上从未得到阵列,只是字符串值“阵列”。它已经,因为我用的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} 
+0

非常感谢你......一直在敲我的头几个小时笑。 – asjdn 2012-02-28 00:00:20