smarty3注册模板插件

 


在使用smarty模板的时候,经常会看到html_options,html_checkboxes等自定义函数,但是这些函数的显示形式,可能并不满足实际开发的需要,或者说,它提供的自定函数比较少,实际开发的时候可能需要更多更强大的函数来支撑。改怎么办?

本文就来简单介绍一下smarty时如何实现这些函数插件的。

smarty注册模板函数插件有两种方式:

一种是通过register手动注册,另种是在plugins文件下创建方法类文件,系统自动注册。

register动态注册有多种形式,不一定只是函数,也可以是块,也可以是修饰器,对象,资源等等。

本文将主要介绍注册块和注册函数。

register动态注册函数插件:

void registerPlugin(string type,string name, mixed callback,bool cacheable,mixed cache_attrs);

第一个参数type可以是function,block,compiler,modifier,就是指明要注册的插件是函数,块,编译器还是修时器。

第二个参数name,你要注册的插件叫什么名字

第三个参数,就是实现的函数的名字

第四个参数,是否设置缓存

注意:smarty3取消了register_function,register_block等方法,改成了registerPlugin()用type参数来指明,要注册的插件的格式。

案例:telValid.php

<?php
require( "./libs/Smarty.class.php");
$smarty=new Smarty();
 function telValid($params,&$smarty)
 {
 if (preg_match("/0\d{2}-\d{8}/",$params['values']))
 {
 return "电话号码验证成功!";
 }
 else
 {
 return "电话号码格式错误!";
 }
 }
 $smarty->registerPlugin("function","telValid", "telValid");
$smarty->display("telValid.html");
?> 


 

telValid.html

<html>
<body>
{telValid values="010-12345678"}
</body>
</html>

以上的的方式,在程序中会有很多的代码,比较混乱。

下面看第二中方式:
在smarty\libs\plugins的文件下有很多的自定义插件,可以在这里自定义。但是这里面的插件已经有很多了,而且找起来也不方便。所以体检大家自定义一个插件包,专门用于存放,你自定的那些插件。

自定义插件的文件命名规范:function.插件名.php;

自定义函数的命名规范:smarty_function_插件名;

函数的参数的规范:两个值,一个是属性的数组,一个是smarty的引用。

案例:

function.tel.php

<?php
 function smarty_function_tel($params,$smarty)
 {
 if (preg_match("/0\d{2}-\d{8}/",$params['values']))
 {
 return "电话号码验证成功!";
 }
 else
 {
 return "电话号码格式错误!";
 }
 }
?>

 

tel.php

<?php
define("ROOT",str_replace("\\","/",dirname(__FILE__)).'/');
require ROOT."/libs/Smarty.class.php";
$smarty=new Smarty();
$smarty->addPluginsDir(ROOT."plugins");//添加自定义的插件包
$smarty->display("tel.html");
?>

tel.htm

{tel values="010-12345678"}




 

 

 

 

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值