smarty插件返回数组

asj*_*jdn 4 php smarty

我正在创建一个插件,将数组返回到模板文件.我似乎无法将完整的数组解析为模板文件.

插件function.arraytest

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

模板文件

{arraytest}
Run Code Online (Sandbox Code Playgroud)

结果数组

我似乎无法遍历模板文件中的数组.

任何帮助将非常感谢.

谢谢

pju*_*ble 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);
}
Run Code Online (Sandbox Code Playgroud)

然后把它称为:

{arraytest out="arraytestValues"}
{foreach from=$arraytestValues key=k item=v}
   <p>{$k}: {$v}</p>
{/foreach}
Run Code Online (Sandbox Code Playgroud)

当然,因为你有一个多维数组,你需要循环两次:

{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}
Run Code Online (Sandbox Code Playgroud)