有php
代码:
function getChildren($parent_id = 0)
{
....
return $SomeChildrenArray;
}
和 Smarty 分配$smarty->assign('children', getChildren($id));
如何编写 smarty 表达式以将一些值传递给函数?
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>
哦对不起!我的帖子错了=)请试试这个
.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');
文件
{my_supper_closure_function parent_id=2}
PHP 文件:
$smarty->assign('children', function($parent_id = 0) {
....
return $SomeChildrenArray;
});
parent_id=2 的 tpl 文件
{children p1=2}