ホームページ > php教程 > php手册 > smarty模板中for循环的扩展插件

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

WBOY
リリース: 2016-06-13 09:36:26
オリジナル
814 人が閲覧しました

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 ,然后在这个文件里面输入如下代码:

<?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}
<img  src="http://www.phpernote.com/images/xing.gif" / alt="smarty模板中for循环的扩展插件" >
{/for}
{/if}
ログイン後にコピー

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

您可能感兴趣的文章

  • smarty 模板中循环表格补充不全的td
  • smarty模板中使用php函数以及smarty模板中如何对一个变量使用多个函数
  • thinkphp模板中判断volist循环的最后一条记录
  • smarty模板中判断数组为空的方法
  • smarty模板中给信息添加最新标签
  • smarty模板保留变量总结
  • php smarty中文截取插件开发示例
  • smarty模板中如何生成随机数
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート