0

phpコードを持っている:

function getChildren($parent_id = 0)
{
....
return $SomeChildrenArray;
}

そしてSmartyの割り当て$smarty->assign('children', getChildren($id));

関数に値を渡すためのスマートな式を作成するにはどうすればよいですか?

4

3 に答える 3

1

Smartyは、プラグインAPIを介して拡張できます。はじめに、 registerPlugin()を参照してください。

$smarty->registerPlugin('function', 'children', function($params, $template) {
  return "some string:" . $params['foobar'];
});

{children foobar="hello world"}

出力します

some string:hello world

プラグイン関数は文字列を返す必要があることに注意してください。


Smarty3以降、テンプレート内から任意の関数を呼び出して割り当てることができます。

{$children = getChildren(3)}

このようにして、任意の関数を呼び出し、必要な値/タイプを返すことができます。呼び出される関数を制御する方法の詳細については、 Smarty_Securityを参照してください…</ p>

于 2012-06-18T09:31:42.033 に答える
0

PHPファイル:

$smarty->assign('children', function($parent_id = 0) {
    ....
    return $SomeChildrenArray;
});

parent_id=2のtplファイル

{children p1=2}

于 2012-06-18T09:18:39.420 に答える
0

あ、ごめんなさい!私は私の投稿で間違っていました=)これを試してください

phpファイル

$smarty->registerPlugin("function","my_supper_closure_function", "my_supper_closure_function");
function my_supper_closure_function($params, $smarty){
$SomeChildrenArray=array($params["parent_id"]);
return print_r($SomeChildrenArray,true);
}

$smarty->display('index.tpl');

tplファイル

{my_supper_closure_function parent_id=2}
于 2012-06-19T14:27:32.227 に答える