массив плагинов Smarty - PullRequest
       2

массив плагинов Smarty

4 голосов
/ 28 февраля 2012

Я создаю плагин, который возвращает массив в файл шаблона. Я не могу получить полный массив для анализа в файле шаблона.

плагин function.arraytest

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

файл шаблона

{arraytest}

результат массив

Не получается перебрать массив в файле шаблона.

Любая помощь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 февраля 2012

Все, что возвращается функцией 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}
0 голосов
/ 28 февраля 2012

Может быть, это поможет:

{assign var=arr value=arraytest}
{$arr....}

Тогда документы: http://www.smarty.net/docsv2/en/language.syntax.variables.tpl

...