smarty 模板 for循环 php,smarty模板中for循环的扩展插件

smarty是php开发中非常流行的一个模板,以前曾发过一篇文章php smarty中文截取插件开发示例是说明如何开发smarty插件的,这篇文章将分享一下如何为smarty模板做一个for循环的扩展插件,方面我们日常的程序开发。

首先说说这个for循环扩展是做什么用的吧。今天在改以前的一个网站的时候,由于一些特定的原因需要在smarty模板中做一个for循环,虽然smarty是可以在模板中以{php}......{/php}标签的形式来直接书写php语句语法的。但由于循环中要用到模板中的变量的值,而在模板中直接写的php语句没办法获取到模板变量中的值,所以这个想法就行不通了,最后就想到是不是也可以实现在smarty模板中直接使用for循环呢?

下面是作者为smarty增加一个for循环扩展插件的具体步骤。

(1)在smarty模板的安装目录下的plugins目录内新建一个文件,命名为 block.for.php ,然后在这个文件里面输入如下代码:

function smarty_block_for($params,$content,&$smarty){

if(is_null($content)){

return;

}

$start=0;

$to=0;

$step=1;

foreach($params as $k=>$v){

switch($k){

case 'start':

case 'to':

case 'step':

$$k=(int)$v;

break;

default:

$smarty->trigger_error("textformat: 未知属性:'$k'");

}

}

$_output='';

for($_x=$start;$_x<=$to;$_x+=$step){

$_output.=$content."\n\r";

}

return $_output;

}

(2)然后就可以直接在smarty模板中使用for循环了,作者的使用案例如下:

php文件部分代码:

$vote='[[[';//我要在模板中将这三个符号转变为三个五角星图片

$smarty->assign('vote',$vote);

smarty模板文件部分代码:

{if false!==$vote|@stripos:'['}

{for start=1 to=$vote|@strlen step=1}

xing.gif

{/for}

{/if}

ok,以上问题解决。大同小异,如果你还需要为smarty扩展更多功能,方法同上,基本上都可以实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值