smarty3使用自定义函数

smarty也像velocity一样支持自定义函数,smarty要使用自定义函数一般有两种方式一种就是写好方法后用smarty提供的注册机制完成,另一种就是把函数纳入到smarty的插件文件夹里。下面来分享下我的代码

1.使用注册机制完成自定义函数或函数块

要注意的是smarty3和smarty的区别,smarty2注册函数使用的是register_function函数块则使用register_block,对于smarty则统一使用registerPlugin,这个方法需要传入3个参数,第一个是类型支持function、block等具体参考开发文档,第二个是名称,第三个是我们定义的函数的名称。函数块使用的时候要像foreach那样有开始和结束标签

<?php
require_once 'libs/Smarty.class.php';
header('Content-type: text/html; charset=UTF-8');
$smart=new Smarty();
$smart->left_delimiter="<{";
$smart->right_delimiter="}>";
function jisuan($args){
	if("+"==$args["type"]){
		return $args["one"].$args["type"]. $args["two"]."=".($args['one']+$args['two']);
	}else if("-"==$args["type"]){
		return $args["one"].$args["type"]. $args["two"]."=".($args['one']-$args['two']);
	}
}
function other($args,$type){
	
	if('*'==trim($type)){
		return $args["one"].$type. $args["two"]."=".($args['one']*$args['two']);
	}else if('/'==trim($type)){
		return $args["one"].$type. $args["two"]."=".($args['one']/$args['two']);
	}

}
//注册插件(自定义函数)
$smart->registerPlugin("function","jisuan","jisuan");
//注册插件(块的方式)
$smart->registerPlugin("block","other","other");
$smart->display("userdefine.tpl");


?>

下面就是模板代码了

<{*自定义函数块的使用*}>
<{other one='8' two='10'}>
*
<{/other}></br>
<{other one='8' two='10'}>
/
<{/other}></br>
<{*自定义函数的使用*}>
 <{jisuan one=5 two=4 type="+"}></br>
<{jisuan one=5 two=4 type="-"}></br>


2.无需注册的方式使用自定义函数或函数块

这种方式其实更简单只需把我们的函数写在libs下面的plugins目录下,但是要注意文件的命名要么是  function.函数名   如果是块的话是block.函数名   ,写在里面的方法命名也有规范

smarty_function_函数名    :  普通函数

smarty_block_函数名         :块函数

传入的参数也有要求,具体的不同smarty版本有不同的要求,具体可查看文档或打开plugins里面的php来弄 ,代码里就不用写registerPlugin了

<?php

function smarty_function_jisuan($args, $template)
{
	if("+"==$args["type"]){
		return $args["one"].$args["type"]. $args["two"]."=".($args['one']+$args['two']);
	}else if("-"==$args["type"]){
		return $args["one"].$args["type"]. $args["two"]."=".($args['one']-$args['two']);
	}
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值