赋值:将参数传递给函数

时间:2012-06-18 08:49:39

标签: php smarty

拥有php代码:

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

Smarty指派$smarty->assign('children', getChildren($id));

如何编写smarty表达式以将一些值传递给函数?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

PHP文件:

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

parent_id = 2的tpl文件

{children p1=2}

答案 2 :(得分: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}