smarty register_function()用法

此文转载至DREAM IN THE DISTANCE的百度空间,感谢他给我带来对这个功能的理解:

 

动态注册模板函数插件,前两个参数是模板函数名称和执行函数名称。

 

原文如下:

 

在smarty 模板中如果根据传递参数不同而在页面中显示不同的内容呢,这要用到register_function()函数。简单研究了一下,了解了它的基本的用法。
测试代码如下:
Test.php
<?php
     require '../common/config_smarty.php';
     function shows($params){
           extract($params);
           if($p1==1){
                 return ' this is one,'.$name;
           }else{
                 return ' this is not one,'.$name;
           }
           //$smarty->assign();
     }
    
     $smarty->register_function('shows',"shows");
     $smarty->display('test.tpl');
?>

Test.tpl
{[shows p1=1 name="jice"]}<br>
{[shows p1=2 name="test"]}

输出结果:
this is one,jice
this is not one,test

我们在test.php 文件中定义了一个shows($params)的方法,有一个$params的参数。注意:在模板中调用shows的方法的时候,传过来的参数是一个数组。所以在这里要用extract()方法,它是把数组中的变量导入到当前的符号表,并将键名做为变量名,健值做为变量值。比如有这样的一个数组。$test=array(“var1”=>”var1_value”, “var2”=>”var2_value”); extract($test);变量var1,var2的值分别为var1_value,var2_value。同样的,如果不用extract()方法,则用$params[‘p1’], $params[‘name’]同样可以取到值。调用register_function()的方法,注册一个函数名。在模板文件中,直接调用 {[shows p1=1 name="jice"]}就可以根据传递的参数不同返回不同的值了。

 

看过之后,我的总结:

在模板中,用shows,调用函数shows 同时传入一个数组 p1=1,name=“jice” 对应的是函数的参数,$params

用extract()的方法可以把数组转化成变量,键名是变量名,键值是变量值。

 

adodb+smarty分页原理中的相关代码:
function unhtml($params)
   {
   extract($params);
   $text=$content;
   global $usefun;
   return $usefun->UnHtml($text);
   }
   $smarty->register_function("unhtml","unhtml");
{unhtml content=$arraybbs[bbsid].bookname}
模板文件里调用了unhtml这个模板函数名称,并且传入一个数组,这个数组的键名是content,键值是$arraybbs[bbsid].bookname。通过extract转化成变量的形式。函数最后返回的结果是调用UnHtml()这个函数处理文本后的结果
我的百度博客链接: http://hi.baidu.com/wenzi_belong_/home
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值