2012-02-27 15 views
3

私は、テンプレートファイルに配列を返すプラグインを作成しています。私は完全な配列がテンプレートファイルに解析されるように見えることはできません。smartyプラグインリターン配列

プラグイン

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

function.arraytestテンプレートファイル

{arraytest} 

結果 配列

私は、テンプレート・ファイル内の配列を反復処理するように見えることはできません。

ご協力いただければ幸いです。 Smartyの関数によって返さ

おかげ

答えて

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

関連する問題