Smarty3配置及入门语法
框架(架构)  /  管理员 发布于 7年前   214
一.Smarty3配置 下载Smarty文件 在Smarty的官方网站下载Smarty文件,解压下载到的Smarty文件,Smarty的库文件就在libs文件夹中。 我使用的PHP调试环境的程序集成包是phpstudy,默认在D盘会有一个WWW的文件夹,在WWW文件夹中创建一个testSmarty的文件夹,testSmarty文件夹就是本次练习Smarty的项目根目录。在testSmarty中创建一个smarty的文件夹,并将libs中的文件复制到这个smarty文件夹中。目录结构如下: Smarty配置 在testSmarty文件夹中创建一个test文件夹,在这个文件夹中创建一个config.php文件,内容如下: 在设置路径的时候我使用的是绝对路径,也能使用相对路径。依据设置的路径,还要在test文件夹中创建tpl,template_c和cache文件夹。 目录如下: 检验smarty是否配置成功: 在test文件夹下创建一个start.php文件,文件内容如下: 在tpl文件中创建一个start.tpl文件,内容如下: 模板文件的后缀并不是非得是tpl 在浏览器中输入localhost:800/testSmarty/test/start.php 注意:在我这儿Apache是800端口 如果浏览器中能够显示出hello Smarty,则说明Smarty配置成功。 二.入门语法 界定符 Smarty的标签是位于界定符之间,默认界定符是{和},界定符是可以改变的。在配置文件中对界定符进行修改,如下: //将左界定符改为# $smarty->left_delimiter = '#'; 当Smarty读取到界定符之间的内容会试图解析它,并输出结果。在界定符之外的内容都是静态。 注释 注释是以*开头*结尾的,外面包着界定符,如下: {* 这儿是注释 *} 输出变量 传递的值可以是字符串,数组也能是对象。 当变量是字符串时,{$变量名}表示输出变量。 当变量是数组时,输出变量的方式有两种,分别为: a.{$arr.key} b.{$arr['key']} 当是一个对象时,可以直接通过obj->method(),调用对象的方法 条件判断 条件判断的基本句式如下: 基本的条件修饰符有:eq(等于),neq(不等于),gt(大于),lt(小于),lte(小于等于),gte(大于等于)。修饰符前后要有空格 循环 Smarty中有两种循环,分别是foreach,section,for和while section循环 section不能循环遍历关联数组,它只能循环遍历连续数字下标的数组,如果要循环关联数组使用foreach section可以接受name,loop,step,start,max,show,其中name和loop是必须的。name是每一次循环得到的下标,loop是循环的值,step循环的步长,默认为1,max是最大循环的次数,start开始循环的下标,默认为0,如果start为负数,就从数组末尾开始循环,show表示是否显示循环的内容,默认是true 如下: 在test文件夹下创建section.php文件,内容如下: 在tpl文件夹下创建section.tpl文件,内容如下: 作者:{$article[item].name} 内容:{$article[item].content} foreach循环 foreach循环比section循环要简单,foreach的语法与php中foreach的语法很像,foreach可以做到任何section做到的功能,并且foreach更简单 例子如下: 在test文件夹中创建foreach.php文件,文件内容如下: 在tpl文件夹中创建foreach.tpl文件,内容如下: {$article.name} {$article.content} 没有文章 for循环 for循环用于创建一个简单的循环,语法如下: step可以不指定,默认循环的步长是1。for还可以指定一个max属性,max属性用于指定循环的次数 与foreach循环类似,for循环也有一个forelse。{forelse}在循环不能遍历的时候执行 while循环 Smarty的while循环与php中的while循环类似,语法如下: 在循环中使用{break}可以停止循环,{continue}退出当前循环进入下一次循环 插件 Smarty插件的实质是函数,插件的类型有三种,分别是function插件,modifier插件(变量调节插件),block插件 使用插件 function插件的使用:{funcName param1 = value...} modifier插件的使用:{$variable | modifierName:param1...} block插件的使用: 如: 制作插件 制作插件的方式有三种 1.使用registerPlugin函数注册写好的自定义函数 2.将写好的插件放在smarty目录中的Plugins目录里 3.PHP内置函数可以自动的以修饰插件(变量调节插件)的形式在模板中使用 使用registerPlugin函数注册自定义插件,例子如下 在test文件夹下创建defineFunc.php文件,内容如下: 在tpl文件夹下创建一个defineFunc.tpl文件,内容如下: registerPlugin函数的第一个参数说明注册的这段程序的类型,在这里是function说明注册的是一个function插件,还可以取得值有block和modifier,第二个参数指注册的Smarty function插件名,第三个参数指自定义函数名,第二个参数和第三个参数可以相同。 在Smarty中当执行到{f_test p1='learn' p2=' Smarty'}时,p1和p2会被打包成一个数组传递到我们定义的test函数中去。 通过网Plugins文件夹中添加文件的方式制作插件 1.制作function插件 在Plugins文件夹下创建一个function.test.php文件(function表示这个一个function插件,test表示插件名),内容如下: 在模板中直接使用test function插件 这两个参数会被打包成一个数组传递到smarty_function_test函数中 2.制作modifier插件 在Plugins文件夹下创建一个modifier.test2.php文件(modifier表示这个一个modifier插件,test2表示插件名),内容如下: 在模板中使用test2 modifier插件 定义modifier插件和function插件有所不同,function插件的自定义函数只接收一个数组参数,modifier插件的自定义函数 将接收到的参数一一列举出来 3.制作block插件 在Plugins文件夹下创建一个block.test3.php文件(block表示这个一个block插件,test3表示插件名),内容如下: 在模板中使用test3 block插件 {test3}{/test3}之间的内容传递到smarty_block_test3中的第二个参数中,test3后跟着的参数打包成一个数组传递到smarty_block_test3中的第一个参数中。 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!template_dir = '/WWW/testSmarty/test/tpl';//模板文件编译后得到的文件的路径$smarty->compile_dir = '/WWW/testSmarty/test/template_c';//缓冲文件的路径$smarty->cache_dir = '/WWW/testSmarty/test/cache';//开启缓冲,缓冲默认是关闭的$smarty->caching = true;//缓冲的保留时间$smarty->cache_lifetime = 120;?>
assign('text','hello Smarty');//渲染模板$smarty->display('start.tpl');?>
{$text}
//将右界定符改为#
$smarty->right_delimiter = '#';//向要渲染的模板传递值$smarty->assign('变量名',值)
{if $variable 条件修饰符 value1} //some{elseif $variable 条件修饰符 value2} //some{else} //some{/if}
'第一章', 'name'=>'QxQstar', 'content'=>'Smarty section循环第一章' ), array( 'title'=>'第二章', 'name'=>'QxQstar', 'content'=>'Smarty section循环第二章' ));$smarty->assign('article',$article);$smarty->display('section.tpl');?>
{section name=item loop=$article}
{foreach $arrayvar as $itemvar}{foreach $arrayvar as $keyvar=>$itemvar}
'第一章', 'name'=>'QxQstar', 'content'=>'Smarty foreach循环第一章' ), array( 'title'=>'第二章', 'name'=>'QxQstar', 'content'=>'Smarty foreach循环第二章' ));$smarty->assign('articles',$articles);$smarty->display('foreach.tpl');?>
{foreach $articles as $article}
{for $variable = $startValue to $entValue step $step}
{for $i = 0 to 10 step 2} {$i}{foreach}不能进行循环{/for}
{while $variable > 0}//some{/while}
{blockName param1 = value...} {$content}{/blockName}
//function插件的使用{include file='header.tpl'}//modifier插件的使用{'abc'|cat:'d'}//block插件的使用{textformat wrap = 10}abc defghikj lmn{/textformat}
registerPlugin('function','f_test','test');$smarty->display('definedFunc.tpl');?>
{f_test p1='learn' p2=' Smarty'}
function smarty_function_test($params){ //$params是一个关联数组 $w = $params['w']; $h = $params['h']; return $w * $h;}?>
{test h = 3 w = 5}
function smarty_modifier_test2($utime,$formate){ return date($formate,$utime);}
{$time|test2:'Y-m-d H-i-s'}
function smarty_block_test3($params ,$content){ $replace = $params['replace']; $maxnum = $params['maxnum']; if($replace == 'true'){ str_replace(',', ',', $content); str_replace('。', '.', $content); } $content = substr($content,0,$maxnum); return $content;}
{test3 replace='true' maxnum = 6}abcdfedddderere{/test3}
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号