MVC是一种开发模式,强调数据的输入、处理、显示是强制分离的

Smarty使用教程
1.如何配置我们的smarty
解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹
templates 存放模板文件
templates_c 存放编译后的文件
再创建初始化文件smarty.ini.php

注意事项:
1.替换变量的标识分隔符一般使用<{}>
改动分隔符的两个方法:
1.改源码:Smarty.class.php $left_delimiter 不推荐
2.动态修改:
$Smarty->left_delimiter="<{";
$Smarty->right_delimiter="}>";
写在display之前

2.smarty分配数据
$smarty->assign("Address",$address);
用来赋值到模板中。可以指定一对 名称/数值,也可以指定包含 名称/数值 的联合数组。
$smarty->assign("aa",true); //输出1
$smarty->assign("aa",false); //输出空
注意:
二维关联数组的分配 <{$arr.num.email}>
对象的分配 <{$dog1->name}>
对象的对象的属性 公开的 <{$dog1->master->name}>
从配置文件中取出数据 常见配置样式等
先加载配置文件<{config_load file="../configs/foo.conf"}>
配置文件中的数据可直接在模板文件中使用<{#Bgcolor#}>

3.smarty模板的内建函数foreach
一维数组循环取出
<{foreach form=$arr item=temp key=k}>
<{$k}>=<{$temp}>
<{/foreach}>
二维索引数组循环取出
<{foreach form=$arr item=temp key=k}>
<{foreach form=$temp item=val}>
<{$val}>
<{/foreach}>
<{/foreach}>
二维关联数组循环取出
<{foreach form=$arr item=item1}>
<{foreach form=$item1 item=item2 key=k}>
<{$k}>=<{$item2}>
<{/foreach}>
<{/foreach}>

4.自定义函数
function test($args){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$args['con']."</font>";
}
return $str;
}
//需注册函数
$smarty->register_function("self","test");
调用形式
<{self times="4" size="5" con="hello" color="red"}>

自定义函数(块注册方式)
function test2($args,$con){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$con."</font>";
}
return $str;
}
//注册块函数
$smarty->register_block("block","test2");
调用形式
<{block times="4" size="5" color="red"}>hello<{/block}>

以插件的形式增加自定义函数(放在libs/plugins文件夹中)
必须遵守文件名格式:function.自定义函数名.php
函数名格式:
function smarty_function_自定义函数名($params,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$args['con']."</font>";
}
return $str;
}
//无需注册

以插件的形式增加自定义块函数
必须遵守文件名格式:function.自定义函数块名.php
函数名格式:
function smarty_block_自定义函数块名($params,$con,&$smarty){
$str="";
for($i=0;$i<$args['times'];$i++){
$str.="<br/><font color='".$args['color']."'>" size='".$args['size']."'>".$con."</font>";
}
return $str;
}
//无需注册

5.smarty基本语法
在模板中使用注释<{*注释内容*}>
在模板文件中调用函数
<{函数名 属性1="属性值" 属性2="属性值"……}>
在模板文件对引用的变量可以进行数学运算,但不能用()来改变运算次序
分配常量并取出
define("RATE","0.08");
<{$samrty.conts.RATE}>
在模板中使用变量调节器
基本用法
<{变量/函数/字符串|变量调节器名称:参数1:参数2}>
变量调节器可以自定义,以插件的形式给出
文件名:modifier.变量名称.php
function smarty_modifier_XXX(){
//代码
}
//新建一个变量调节器 要求句子首字母大写其他小写
文件名:modifier.变量名称.php
function smarty_modifier_mycapitalize(){
return strtoupper(substr($string,0,1)).strtolower(substr($string,1));
}
常用的变量操作符
date_formate 时间格式
escape 转码
nl2br 换行符替换为<br/>
regex_replace 正则替换
string_formate 字符串格式化
truncate 截取

6.samrty其他内建函数
capture 捕获
config_load 从配置文件中加载变量
include 在当前模板中包含其他模板
insert 类似于include,但所包含的内容不会被缓存
if elseif else
ldelim rdelim 左右边界符
count 计数
literal 标签内数据当文本处理
php
section sectionelse

7.自定义函数
counter 保存了每次记数时的当前记数值. 用户可以通过调节 interval 和 direction 调节该值. 也可以决定是否输出该值. 如果需要同时运行多个计数器,必须为它们指定不同的名称. 如果没有指定名称,模板引擎使用 "default" 作为缺省值.
cycle
用于轮转使用一组值. 该特性使得在表格中交替输出颜色或轮转使用数组中的值变得很容易.
html_checkboxes
根据给定的数据创建复选按钮组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代. 所有的输出与 XHTML 兼容.
html_options
根据给定的数据创建选项组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代.
html_radios
根据给定的数据创建单选按钮组. 该函数可以指定哪个元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代. 所有的输出与 XHTML 兼容.
html_select_date
用于创建日期下拉菜单,可以显示任意年月日.
html_select_time
用于创建时间下拉菜单
mailto
用于创建日期下拉菜单
popup-init,popup
popup 用于创建javascript弹出窗口. 需要映入overLib.js
textformat
用于格式化文本

8.变量(重点使用)
$config_dir
$template_dir
$compile_dir
$plugins_dir
$caching
$cache_dir
$cache_lifetime
$debugging启动调试控制台

9.smarty的缓存机制
默认是当模板文件有改动时,控制器会判断
1.模板编译文件是否存在
2.模板文件改动时间是否大于编译文件改动时间
结果为true时才会重新生成编译文件,从而对页面重新渲染
缺点:
1.生成的编译文件是PHP动态数据文件,影响浏览器读取性能
2.当控制器文件发生变化时,编译文件不会重新生成
修改后:
1.生成的编译文件是HTML静态数据文件,利于浏览器读取
2.当控制器文件发生变化时,通过设置的cache_lifetime来控制重新生成编译文件

局部缓存技术
一个模板文件一部分缓存,一部分实时更新
insert函数默认是不缓存

//根据ID号来生成不同的缓存页面
$smarty->display('模板文件',缓存ID)
$smarty->clear_all_cache(int expire time);//清除所有缓存
作为可选参数“expire time”,你可以指定一个以秒为单位的最小时间,超过这个时间的缓存都将被清除掉
$smarty->clear_cache('模板文件',缓存ID);//清除指定id的缓存文件

append 以值传递,有拷贝的过程
append_by_ref 引用添加
assign默认是值传递的
assign_by_ref是引用传递

10.smarty过滤器
Prefilters预过滤器
在控制器读取模板文件之前运行,函数封装在display函数中
所用是删除不需要的内容,监视对模板进行的操作
Postfilters后过滤器 可以用开添加注释版本号
在控制器输出编译文件之前运行
Outputfilters输出滤镜
编译文件被浏览器读取之前执行

smarty详细使用教程(韩顺平smarty模板技术笔记)的更多相关文章

  1. 韩顺平_linux_随堂笔记

    这还是自己3年前(2011年)整理的笔记,记得当时那会儿自己对Linux还特别的憧憬,也很喜欢韩老师的讲课风格,边看边做笔记乐此不彼,现在开通了技术博客,所以把当年的笔记也放上来和大家分享.同时推荐没 ...

  2. smarty模板技术

    一.什么是smarty?smarty是一个使用php写出来的模板php模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用php程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美 ...

  3. (转)PHP模板smarty简单入门教程

    转之--http://blog.163.com/zf_2011@126/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:- ...

  4. 尚硅谷韩顺平Linux教程学习笔记

    目录 尚硅谷韩顺平Linux教程学习笔记 写在前面 虚拟机 Linux目录结构 远程登录Linux系统 vi和vim编辑器 关机.重启和用户登录注销 用户管理 实用指令 组管理和权限管理 定时任务调度 ...

  5. Smarty模板技术学习(二)

    本文主要包括以下内容 公共文件引入与继承 内容捕捉 变量调剂器 缓存 Smarty过滤器 数据对象.注册对象 与已有项目结合 公共文件引入与继承 可以把许多模板页面都用到的公共页面放到单独文件里边,通 ...

  6. Smarty模板技术学习

    模板引擎技术:使得php代码和html代码分离的技术就称为"模板引擎技术" 自定义smarty模板技术实现 <?php //迷你smarty原理 class MiniSmar ...

  7. 五,Smarty模板技术/引擎——自定义函数机制

    自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...

  8. 韩顺平HTML5教程www.gis520.com

    传智播客.韩顺平.HTML5游戏公开课-坦克大战01.HTML5介绍.HTML5发展.HTML5学习网站推荐.wmv http://dl.vmall.com/c0b7xrkftf 传智播客.韩顺平.H ...

  9. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

随机推荐

  1. 一口一口吃掉Volley(三)

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(三)/ 学习了一口一口吃掉Volley(二)之后,你应该已经学会了如何 ...

  2. 自制“低奢内”CSS3登入表单,包含JS验证,请别嫌弃哦。

    要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识.和JS/JQuery基本语法. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...

  3. 【杂谈】从CGI到Servlet

    访问服务器的静态页面 每个Web服务器都运行着一个HTTP服务软件,用于响应web浏览器的请求,返回客户想要的页面.HTTP服务器都会有一个文件夹用于放置相关的页面文件,默认是  /user/loca ...

  4. Restful API 设计参考原则

    在项目中,需要为后台服务撰写API.刚开始接触的时候,并没有考虑太多,就想提供URL,服务端通过该URL进行查询.创建.更新等操作即可.但再对相关规范进行了解后,才发现,API的设计并没有那么简单,远 ...

  5. Core Animation之CABasicAnimation(基础动画)

    #import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UIButto ...

  6. 从零开始学JAVA(09)-使用SpringMVC4 + Mybatis + MySql 例子(注解方式开发)

    项目需要,继续学习springmvc,这里加入Mybatis对数据库的访问,并写下一个简单的例子便于以后学习,希望对看的人有帮助.上一篇被移出博客主页,这一篇努力排版整齐,更原创,希望不要再被移出主页 ...

  7. vue实用组件——页面公共头部

    可伸缩自适应的页面头部,屏幕适应范围更广泛 效果如下: 代码如下: <template> <div class="site-header"> <div ...

  8. 记一次Java AES 加解密 对应C# AES加解密 的一波三折

    最近在跟三方对接 对方采用AES加解密 作为一个资深neter Ctrl CV 是我最大的优点 所以我义正言辞的问他们要了demo java demo代码: public class EncryptD ...

  9. Repeater控件,判断最少选择一行记录

    本演示中,教会大家使用jQuery来判断Repeater控件,最少选择一行记录. 在Repeater控件中,每行第一列放置一个CheckBox,然后在Repeater控件之外,放置一个Button按钮 ...

  10. 点击CheckBox让Gridview控件在编辑与正常状态之间切换

    昨晚快休息时,还有一位网友咨询Insus.NET,他想在开发时,实现一个小功能,就是想让用户在点击Gridview控件第一列的CheckBox之后,GridView进入编辑状态,取消选中的CheckB ...