转 smarty学习笔记电子版整理

使用smarty模版,smarty类的文件在libs目录下,将libs目录拷贝到工作区当前目录下,建立templates和templates_c文件夹,也可以通过代码自己指定,推荐用系统默认目录。

require_once("../Smarty-3.1.15/libs/Smarty.class.php");  

$smarty=new Smarty;

$smarty->left_delimiter="<{"; //设定smarty变量左标记,默认为{

$smarty->right_delimiter="}>"; //设定smarty变量右标记,默认为}

 

分配变量

$smarty->assign(“title”,”标题”);

在模版中读取分配的内容<{title}>

 

程序中的数组

$arr5=array(

"emp1"=>array("id"=>"001","name"=>"xiaoming","age"=>"19"),

"emp2"=>array("id"=>"002","name"=>"daming","age"=>"15")

);

$smarty->assign("arr5",$arr5);

模版中数组读取

<{$arr5.emp1.name}>

 

程序中的对象

class Dog{

var $name;

var $age;

var $color;

function __construct($name,$age,$color){

$this->name=$name;

$this->age=$age;

$this->color=$color;

}

}

$dog1=new Dog("小朵","5","red");

$smarty->assign("dog1",$dog1);

模版中对象读取

<{$dog1->name}>

 

配置文件config/my.conf

title="我的第一个配置文件";

bgcolor="pink";

模版中读取配置文件

<h1><{#title#}></h1><br />

 

程序中的二维下标数组

$arr3=array(

array("河北","吉林","中州"),

array("财神","萨卤","贝清")

);

模版中循环读出二维数组中的数据,其中key是下标索引,外围的temp代表了一维数组,item代表数组中元素的内容

{foreach from=$arr3 item=temp key=k}

{foreach from=$temp item=val}

{$val}

{/foreach}

{/foreach}

 

Smarty直接获取值

<{$smarty.get.username}>//直接获取get方式传来的username的值

<{$smarty.server.SERVER_NAME}>//获取ip服务器名

 

自定义函数的注册

function test($args){

$str="";

 

for($i=0;$i<$args['time'];$i++){

$str.="<font size='".$args['size']

."'color='".$args['color']."'>"

.$args['content']." "."</font>";

}

return $str;

 

}

//注册函数

$smarty->registerPlugin("function","hsp","test");

在模版中调用自定义函数

<h1>自定义函数的使用</h1>

{hsp time="4" size="5" content="自定义函数的调用" color="blue"}

 

自定义块的注册

function test2($args,$con){

$str="";

for($i=0;$i<$args['time'];$i++){

$str.="<font size='".$args['size']

."'color='".$args['color']."'>"

.$con." "."</font>";

}

return $str;

 

}

$smarty->registerPlugin("block","blk","test2");

在模版中调用块

<h1>块调用</h1>

{blk time="4" size="5" color="blue"}

块的调用测试

{/blk}

 

Smarty插件,smarty插件在libs/plugins/目录下

函数插件的格式为function.hlp.php,块名block.blk.php,即function.函数名.php,block.块名.php

文件中程序代码格式为

smarty_function_hlp($args,&$smarty){}或块名smarty_block_blk($args,$con,&$smarty)

&$smarty是必要的格式,$con是模版中闭合标签的内容

 

变量调节器,连接字符串cat,首字母大写capitalize

{$varname | cat:”yez”:”second” | capitalize}//连接首字母并大写

{$eshtml|escape}//将html以普通文本输出

 

调节器插件modifer.xxx.php,程序函数名为smarty_modifer_xxx($string)

 

验证邮箱格式是否合法调节器

<?php

function smarty_modifier_isemail($str){

$pattern="/^[a-zA-Z_][a-zA-Z0-9_-]*@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$/i";

if(preg_match($pattern,$str)==1){

return "是合法的格式";

}else{

return "邮箱格式不合法";

}

 

}

?>

在模版中使用

<{$varname | isemail}>

preg_match($pattern,$str,$arrs);//得到的结果是一维数组

preg_match_all($pattern,$str,$arrs);//得到的结果是二维数组

 

{include file=”bottom.tpl” varname=”所传递的值”}

在bottom.tpl中{$varname}可获得传来的值

 

$smarty->caching=true;//开启缓存

$smarty->cache_lifetime=60;//设置缓存时间为60秒

$smarty->debugging=true;//开启调试台控制窗口

 

局部的代码实时更新

function insert_mytime(){return date(“Y-m-d h:i:s”);}

模版中使用{insert name=mytime}

 

设置编号的缓存

$smarty->display(“test.tpl”,”11”);//设置编号为11的缓存

$smarty->clearAllCache();//删除所有缓存

$smarty->clearCache(“test.tpl”,”11”);//删除指定编号的缓存

 

posted @ 2016-04-04 13:22  麒麟阁  阅读(165)  评论(0编辑  收藏  举报