PHP代码:
function show_playlist_form($array)
{
global $cbvid;
assign('params',$array);
$playlists = $cbvid->action->get_channel_playlists($array);
assign('playlists',$playlists);
Template('blocks/playlist_form.html');
}
HTML CODE(SMARTY INSIDE):
<html><head></head>
<body>
{show_playlist_form}
</body>
</html>
这一切都可以在clip-bucket视频脚本中找到。 html代码调用php函数,显示 playlist_form.html 。但是,我有兴趣在smarty定义的标签 show_playlist_form 中添加一个整数值,以便它将它传递给php show_playlist_form($ array)中的函数,然后function会将整数分配给 $ array 。
我试过,假设我有兴趣传递整数 1 :
{show_playlist_form(1)}
致命错误: Smarty错误:[在/home/george/public_html/styles/george/layout/view_channel.html第4行]:语法错误:无法识别的标签:show_playlist_form(1)(Template_Compiler /home/george/public_html/includes/templatelib/Template.class.php 中的.class.php,第447行 1095
{show_playlist_form array='1'}
html代码有效,但我什么都没有(空白)。
所以,它不起作用,我该怎么办?我需要将整数值传递给函数。
答案 0 :(得分:4)
您在这里寻找的是实现接收参数的“自定义模板功能”。
如the documentation on function plugins所示,您创建的函数将收到两个参数:
例如,如果你定义它:
function test_smarty_function($params, $smarty) {
return $params['some_parameter'], ' and ', $params['another_parameter'];
}
并以名称test
注册Smarty,如下所示:
$template->registerPlugin('function', 'test', 'test_smarty_function');
然后你可以在你的模板中使用它:
{test some_parameter=hello another_parameter=goodbye}
哪个应输出:
hello and goodbye
在你的情况下,你可能想要这样的东西:
function show_playlist_form($params, $smarty) {
$playlist_id = $params['id'];
// do stuff...
}
和此:
{show_playlist_form id=42}