0

php代码:

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

和 Smarty 分配$smarty->assign('children', getChildren($id));

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

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->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}
于 2012-06-19T14:27:32.227 回答
0

PHP 文件:

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

parent_id=2 的 tpl 文件

{children p1=2}

于 2012-06-18T09:18:39.420 回答