拥有php
代码:
function getChildren($parent_id = 0)
{
....
return $SomeChildrenArray;
}
Smarty指派$smarty->assign('children', getChildren($id));
如何编写smarty表达式以将一些值传递给函数?
答案 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}