Smarty插件返回数组

4
我正在创建一个插件来返回一个数组到模板文件中。但是似乎无法将完整的数组解析到模板文件中。
插件函数为 "arraytest"。
function smarty_function_arraytest($params,Smarty_Internal_Template $template)
{
    $x = array("1"=>array("categories"=>"Action"));
     return $x
}

模板文件
{arraytest}

结果数组

我似乎无法在模板文件中对该数组进行迭代。

非常感谢您的任何帮助。

谢谢

2个回答

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}

非常感谢,我已经折腾了几个小时了,哈哈。 - asjdn

0

正确答案在下面,来自@pjumble)) - ZloyPotroh

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