一。基本配置
第一步:下载smarty:官网www.smarty.net
第二步:加载类文件和更改配置

1. //加载类文件

require_once '../libs/Smarty.class.php';
//实例化对象
$smarty=new Smarty();
//更改配置 如果不更改就不用写
$smarty->setTemplateDir('./templates');//设置模版目录
$smarty->setCompileDir('./templates_c');//设置编译目录
$smarty->setCacheDir('./cache');//设置缓存目录
$smarty->setConfigDir('./configs');//设置配置文件所在目录
$smarty->addPluginsDir('./plugins');//添加插件目录
$smarty->left_delimiter='{';
$smarty->right_delimiter='}';
//设置缓存
$smarty->debugging = true; //开启的调试窗口
$smarty->caching = true;
$smarty->cache_lifetime = 120;
第三步:许可变量与显示
$smarty->assign('chen','123');
//显示模版
$smarty->display('1.html');

二。常见类型的输出
$smarty->assign('int',PHP_INT_MAX);
$smarty->assign('float',12.3);
$smarty->assign('bool',true);
$smarty->assign('string','this is a test');
$smarty->assign('arr',array('a','b','c','username'=>'king','age'=>12));
$smarty->assign('arr1',array('a'=>array(1,2,3),'b'=>array(11,22,33)));
$smarty->assign('obj',new Test());
$smarty->assign('resource',fopen('index.php','r'));
$smarty->assign('null',NULL);
class Test{
public $username;
public $email;
public $sex;
public function __construct(){
$this->username='king';
$this->email='382771946@qq.com';
$this->sex='男';
}
public function sayHi(){
echo 'Say Hi To Everybody<br/>';
}
public function test(){
return 'this is a test';
}
}
三、模板注释
{*模版注释,注释不会在模版文件的最后输出中出现*}
{*这是HTML注释不一样*}
四、在模板中定义变量
通过assign在模板中声明变量
{ assign var=num1 value=1 }
num1:{$num1} <br />
声明变量
{$test="hello"}
{$test} <br />
标签嵌套
{$test1="{$test} chen"}
{$test1} <br />
声明数组
{assign var=arr3 value=[1,2,3]}
{$arr3.0} <br />
{$arr3[1]} <br />
{assign var=arr4 value=['username'=>'queen','age'=>12]}
{$arr4.username} <br />
{$arr4['age']} <br />
{$arr5=['a','b','c',['test'=>'test','test1'=>'test1','eee']]}
{$arr5.0} <br />
{$arr5[3]['test']} <br />
{$arr5[3][0]} <br />
可变变量
{$world='world'}
{$hello_world="this is hello world"}
{$hello_{$world} <br />
四、预保留变量

session_start();
$_SESSION['username']='admin';
$_SESSION['id']=1;
define('TEST','This is a test');

在模板中
{$smarty.session.username}
{$smarty.session.id}
可以使用的预保留变量
1>页面请求变量
$smarty.get.page 相当于PHP中的$_GET['page']
$smarty.post.page 相当于PHP中的$_POST['page']
$smarty.cookies.username 相当于PHP中的$_COOKIE['username']
$smarty.session.username 相当于PHP中的$_SESSION['username']
$smarty.server.SERVER_NAME 相当与PHP中的$_SERVER['SERVER_NAME']
$smarty.env.PATH 相当于PHP中的$_ENV['PATH']
$smarty.request.username 相当于PHP中的$_REQUEST['username']
得到当前的时间戳
{$smarty.now}
{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{time()}
{date("Y-m-d H:i:s",time())}
得到PHP脚本中的常量的值
PHP版本:{$smarty.const.PHP_VERSION} <br />
PHP_OS: {$smarty.const.PHP_OS} <br />
{$smarty.const.TEST}
得到配置文件中的值
{config_load "reset.conf"}
title:{$smarty.config.title} <br />
title:{#title#} <br />
返回经过处理的当前模版名(不包含目录)
当前模版名称:{$smarty.template} <br />
返回当前的模版目录名
当前模版目录名称:{$smarty.current_dir} <br />
返回Smarty的版本号
Smarty Version:{$smarty.version} <br />
返回当前的左右定界符
左定界符:{$smarty.ldelim} <br />
右定界符:{$smarty.rdelim} <br />
其它常用:
{$smarty.capture}:捕获内置的capture模版输出
{$smarty.section}:用来指向section循环的属性
{$smarty.block.child}:返回子模版文本块
{$smarty.block.parent}:返回父模版文本块

五、变量调节器
capitalize:将变量里的单词的首字母大写,ucwords*
单词首字母大写:{$test|capitalize}
{$test|ucwords}
{*count_characters:计算变量值里的字符个数,
参数值boolean型决定是否计算空格数,默认不计算*}
字符个数:{$test|count_characters}
字符个数带空格:{$test|count_characters:true}
cat:将cat里的参数值连接到给定的变量后面,默认为空
连接字符:{$test|cat:'!':'<br/>':'hello world!':"maizixueyuan"}
count_paragraphs:计算变量里的段落数量
段落数量:{$content|count_paragraphs}
count_sentences:计算变量里的句子,句子由点号、问号或感叹号分隔(.?!)。
段落中的句子: {$content|count_sentences}
count_words:计算变量的单词数
单词数:{$content|count_words}
date_format:日期格式化
{$smarty.now|date_format:"%Y-%m-%d"} <br />
赋初始值
为变量赋初始值:{$kickName|default:'king'} <br />
{*escape HTML转码,URL转码等,默认是HTML转码*}
默认没有转码
{$string} <br />
转换HTML实体或者写escape:'html'
{$string|escape} <br />
{$string|escape:'html'} <br />
lower|upper转换成小写或者大写
{$string1|lower} <br />
{$string1|upper} <br />
indent产生缩进,第一个参数指定缩进多少个字符,默认是四个字符;
第二个参数,指定缩进用什么字符代替
{$string1|indent:4} <br />
{$string1|indent:4:'*'} <br />
nl2br 将字符串中的换行符转换成<br/>像PHP中的nl2br()
{$string2|nl2br} <br />
replace:字符串替换,第一个参数是搜索的内容;
第二个参数是搜索到之后替换的内容;
相当于PHP中的str_replace()函数*}
{$string2|replace:'maizi':'麦子'} <br />
spacify:在字符串的每个字符之间插入空格或者其它字符,默认是空格
{$string2|spacify} <br />
{$string2|spacify:'*'} <br />
strip:替换所有重复的空格,换行和tab为单个或者指定的字符串;
可以指定要替换的字符串
*}
{$string2|strip} <br />
{$string2|strip:'?'} <br />
{*strip_tags:去除所有的HTML标记*}
{$string3} <br />
{$string3|strip_tags} <br />
{*string_format:格式化字符串*}
{$number=3.1415926}
{$number} <br />
{$number|string_format:"%.2f"} <br />
{$number|string_format:"%d"} <br />
对于同一个变量,你可以使用多个修改器。它们将从左到右按照设定好的顺序被依次组合使用。 使用时必须要用"|"字符作为它们之间的分隔符。
转换成实体|小写|用*进行缩进
{$string|escape|lower|indent:'4':'*'} <br />
也可以使用PHP的系统函数
{$string4='maiziedu'}
{$string4|substr:2:2} <br />
{$string4|strtoupper} <br />
系统中默认的变量调节器函数都是Smarty自带的插件
都在plugins目录下
{$filename='1.txt.jpeg'}
{$filename|ext} <br />
<hr />
{$string4|font:'20px':'green':'Microsoft Yahei':'normal'}
<hr />
{$string4|font:'30px':'purple':'华文彩云':'bold'} <br />
{$string4|strShuffle} <br />

六、Smarty模版中的内置函数
assign 声明变量
{assign var='username' value='king'}
用户名:{$username} <br />
相当于assign函数属性的简写
{assign username test}
用户名:{$username} <br />
相当于assign的缩写,直接写变量名称=值
{$username='queen'}
用户名:{$username} <br />
{$array=['a','b','c',1,2]}
{$array.0} <br />
通过append动态追加元素
{append var='array' value='d'}
{append var='array' value='king' index='username'}
{print_r($array)}
<hr />
<h3>流程控制相关</h3>
{$username='maizi'}
1、 if
{if $username=='maizi'}
欢迎 <br />
{/if}
3、if...else
{if $username eq 'maizi1'}
Hello Maizi1 <br />
{else}
Hello Everybody <br />
{/if}
3、if ... elseif...
{$day=3}
{if $day==1}
星期一 <br />
{elseif $day==2}
星期二 <br />
{else}
非法日期
{/if}
4、is [not] div by是否能整除
{$num1=8}
{if $num1 is div by 4}
整除 <br />
{else}
不能整除 <br />
{/if}

5、is[not] even是否为偶数
{$num1=3}
{if $num1 is not even}
不是偶数 <br />
{else}
是偶数 <br />
{/if}

6、for循环
步长为1的简单循环
{for $var=1 to 10}
{$var} <br />
{/for}

设置步长
{for $var=1 to 10 step 2}
{$var} <br />
{/for}

通过max设置最大循环次数
{for $var=1 to 100 step 2 max=10}
{$var} <br />
{/for}

当循环条件不成立的时候可以使用forelse
{for $var=5 to 1}
{$var} <br />
{forelse}
循环条件不成立时执行的代码 <br />
{/for}

使用while循环
{$var=10}
{while $var>=0}
{$var--} <br />
{/while}

遍历数组可以通过foreach 和 section进行遍历
通过foreach进行遍历*
{$arr=['a','b','c','d']}
{if is_array($arr)}
{foreach $arr as $k=>$v}
键名={$k}---键值={$v}
<hr />
{/foreach}
<hr />
{foreach $arr as $v}
键值={$v} <br />
{/foreach}
<hr />
{*如果没有指定数组下标 可以通过@key得到*}
{foreach $arr as $v}
键名={$v@key}--键值={$v} <br />
{/foreach}
{/if}

当数组没有值时可以使用foreachelse
{foreach $arr1 as $val}
{$val}
{foreachelse}
没有结果
{/foreach}

foreach支持嵌套
{foreach $users as $user}
{foreach $user as $val}
{$val} <br />
{/foreach}
<hr />
{/foreach}
<hr color='red'/>
<h2>用户列表</h2>
<table border='1' width='80%' cellpadding='0' cellspacing='0'>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
<td>地址</td>
</tr>
{foreach $users as $user}
<tr>
<td>{$user.id}</td>
<td>{$user.username}</td>
<td>{$user.email}</td>
<td>{$user.addr}</td>
</tr>
{foreachelse}
<tr>
<td colspan='4'>没有用户</td>
</tr>
{/foreach}
</table>

foreach中有一些常用属性
<hr color='blue'/>
<h2>用户列表</h2>
<table border='1' width='80%' cellpadding='0' cellspacing='0'>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
<td>地址</td>
</tr>
{foreach $users as $user}
{if $user@first}
<tr bgcolor='red'>
{elseif $user@last}
<tr bgcolor='green'>
{elseif $user@index is even}
<tr bgcolor='blue'>
{else}
<tr>
{/if}
<td>id={$user.id}--index={$user@index}--iteration={$user@iteration}</td>
<td>{$user.username}</td>
<td>{$user.email}</td>
<td>{$user.addr}</td>
</tr>
{/foreach}
{if $user@show}
<tr><td colspan='4'>一共{$user@total}个用户</td></tr>
{else}
<tr><td colspan='4'>没有用户,请添加</td></tr>
{/if}
</table>
<hr color='red'/>
通过break终止循环
{$arr=['a','b','c','d','e']}
{foreach $arr as $val}
{if $val=='c'}
{break}
{/if}
{$val}
{/foreach}

通过continue跳过当次循环,进入下次循环
{$arr=['a','b','c','d','e']}
{foreach $arr as $val}
{if $val=='c'}
{continue}
{/if}
{$val}
{/foreach}

七:继承
$smarty->display('extends:parent.html|child.html');

php基础复习(一)smarty模板的更多相关文章

  1. smarty模板的基础搭建

    1.下载smarty模板,官方即有 2.解压即可.你会得这样的目录 除了libs文件夹其余都可以删掉(不知道有啥用). 3.在当前目录下分别创建templates.templates_c.cache. ...

  2. smarty模板基础1

    smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.in ...

  3. smarty模板基础2

    Smarty自带了一些内置函数,这些内置函数是Smarty模板引擎的组成部分.他们被编译成相应的内嵌PHP代码,以获得最大性能. 您创建的自定义函数不能与内置函数同名,也不必修改这些内置函数. 其中一 ...

  4. smarty模板基础3 *缓存数据*

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 < ...

  5. smarty模板基础----缓存数据

    缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 1 2 ...

  6. smarty模板开发基础总结

    前提:1. 部署smarty模板目录:2. 编写Smarty类的子类,定制好template_dir.compile_dir.config_dir.cache_dir.left_delimiter.r ...

  7. smarty模板引擎基础(二)

    smarty模板引擎所需文件夹共可分为存放页面缓存的(cache).存放配置文件的(configs).存放模板扩充插件的(plugins).存放模板文件的(templates).存放编译后的模板文件的 ...

  8. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

  9. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  10. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

随机推荐

  1. 转:python webdriver API 之下拉框处理

    下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过 ...

  2. [原创]java WEB学习笔记53:Struts2学习之路---前奏:使用 Filter 作为控制器的 MVC

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 变形--旋转 rotate()

    旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中心顺时针旋转:如果这个值为负值,元素相 ...

  4. 侧菜单栏的实现SlidingPaneLayout

    SlidingPaneLayout分为两部分,上面的 左划出部分和没划出的时候 <?xml version="1.0" encoding="utf-8"? ...

  5. struts_22_xwork校验器列表使用说明

    系统提供的校验器列表如下: required (必填校验器,要求field的值不能为null) requiredstring (必填字符串校验器,要求field的值不能为null,并且长度大于0,默认 ...

  6. android中获取打气筒的几种方式

    1,简单说明,打气筒就是将我们的xml布局转换为我们的view对象,不扯远了,直接看代码 A:从context中获取 LayoutInflater inflater1 = LayoutInflater ...

  7. ajax中网页传输(三)XML——下拉列表显示练习

    XML:页面之间传递数据,跨平台传递 HTML:超文本标记语言,核心标签 XML的形势为 <xml version='1.0'> <Nation> <one> &l ...

  8. Html基础知识讲解

    Html基础知识讲解 <title>淄博汉企</title> </head> <body bgcolor="#66FFCC" topmar ...

  9. 【py技巧】使用reload重导入修改过的包或模块

    #使用import导入 import my_module my_module.something() #out - orignal #这里修改输出 - changed reload(my_module ...

  10. 膜拜acm大牛 虽然我不会这题,但是AC还是没有问题的~(转自hzwer)

    wywcgs: 亦称Lord Wu,俗名吴垠,2009级厦门大学智能科学与技术学院研究生,本科就读于哈尔滨工业大学.因其深厚的算法功底与独到的思维方式,被尊为“吴教主”,至今声威犹存. 2006年起参 ...