1 如何彻底去除视图文件中的PHP代码
- html代码与PHP代码分离,其实就是前端人员与程序员分离
- 思路:查找替换
2 Smarty
- smarty就是一个类文件
2.1 举例
2.2 Smarty常用配置
2.2.1 左右定界符
左边界符:$smarty->left_delimiter="<{";
右边界符:$smarty->right_delimiter="}>";
2.2.2 smarty常用目录的配置
- smarty类文件中的构造方法对所有的目录进行了初始化
- (1)设置或读取视图文件目录
- 设置视图文件目录:$smarty->setTemplateDir(新目录文件)
- 读取视图文件目录:$smarty->getTemplateDir()
- (2)其他目录的设置和读取方法
- 编译目录的设置:$smarty->setCompileDir()
- 编译目录的读取:$smarty->getCompileDir()
- 配置目录的设置:$smarty->setConfigDir()
- 配置目录的读取:$smarty->setConfigDir()
3 smarty中的变量
在PHP中,能用smarty解决的,尽量不要使用PHP语法
3.1 普通变量
- 所有的PHP变量,都可以传递到视图文件来使用
- 但是,在视图中,对象和资源变量,不常用
- 在模板中,读取数组的元素,可以使用中括号语法和点语法
3.2 保留变量
3.2.1 访问页面请求变量
- 所有的超全局数组变量,可以在视图文件中直接使用
- smarty获取超区局变量
{$smarty.get.参数}
{$smarty.post.参数}
{$smarty.request.参数}
{$smarty.server.参数}
{$smarty.session.参数}
{$smarty.cookie.参数}
{$smarty.files.参数}
3.2.2 访问PHP中的预定义变量**
- {$smarty.const.常量名}
3.2.3 smarty时间戳**
- {$smarty.now}
- 格式化时间戳:{$smarty.now|date_format:’%Y-%m-%d %H:%M:%S’}
3.3 配置文件变量
3.3.1 定义配置文件
- 设置配置文件的工作目录:$smarty->setConfigDir()
- 读取配置文件的工作目录:$smarty->getConfigDir()
- 配置文件拓展名:.conf、.ini
- 配置文件的注释:#
- 一行只能写一个配置
- 格式是:变量名=变量值
- 变量名不带$符号,变量值不带引号
3.3.2 在视图文件中,如何访问配置变量
<!--加载配置文件-->
<{config_load file="myConfig.conf"}>
<!--读取配置文件参数-->
<{#a#}><br>
<{$smarty.config.b}><br>
<{$smarty.config.c}><br>
3.3.3 配置文件变量分组
- 使用中括号对配置文件进行分组
3.3.4 在视图文件读取分组的配置变量
- <{config_load file=“myConfig.conf” section=“tw”}>
4 smarty中的循环 foreach
4.1 foreach语法格式
- foreach可以遍历所有类型的数据,包含,枚举数组、关联数组、混合数组、多维数组
- {foreach $arr as $key=>$value}
循环的内容
{/foreach} - 面向非程序员的写法
{foreach from=’ ’ key=’ ’ item=’ '}
{/foreach}
4.2 输出一维数组
4.3 输出二维数组
4.4 foreach常用属性
参数 | 说明 |
---|---|
@key | 输出当前值的索引,可能是整形索引,也可能是字符索引 |
@index | 当前数组索引,从0开始计算 |
@iteration | 当前循环的次数,从1开始计算 |
@first | 当首次循环时,值为true |
@last | 当最后一次循环时,值为true |
@total | 整个循环的次数,可以在foreach内部或外部使用 |
5 smarty中的循环 section
5.1 foreach语法格式
- section循环,与PHP的for循环相似
- for循环可以指定循环起点、步长值、最大循环次数
- for只能遍历枚举数组,数组下标必须是从0开始的正整数
- for不能遍历关联数组(数字下标是字符串)
- {section name=’ ’ loop=’ ’ start=’ ’ step=’ ’ max=’ '}
{/sextion}
参数 | 说明 |
---|---|
name | 每次循环的索引,相当于$i |
loop | 循环的数组变量 |
start | 循环的初始值,默认为0,从第1个元素开始循环 |
step | 每次循环的步长值,默认为1 |
max | 最大循环次数 |
name和loop属性是必须的
5.2 遍历一维枚举数组
5.3遍历二维数组
6 smarty中的条件判断 if
- PHP中的运算符在smarty中都可以使用
6.1 if三种语法结构
-
(1)只判断true的情况
{if 条件判断 }
条件为true执行的代码
{/if} -
(2)既判断true,也判断false
{if 条件判断 }
条件为true执行的代码
{else}
条件为false执行的代码
{/if} -
(3)多条件判断
{if 条件1 }
执行的代码
{elseif 条件2 }
执行的代码
{elseif 条件3 }
执行的代码
{else}
执行的代码
{/if}
6.2 if中的运算符
6.3 应用举例:表格隔行变色
7 smarty中的变量调节器
7.1
- 变量调节器,就是对变量进行格式的函数,对变量进行格式化输出
- 语法格式:{$var |调节器1:参数1:参数2:参数N |调节器2 |调节器3····}
7.2 常用变量调节器
调节器 | 说明 | 对应PHP的函数 |
---|---|---|
upper | 转成全大写 | strtoupper() |
lower | 转成全小写 | strtolower() |
nl2br | 将\n换行符,转成<br/> | nl2br() |
replace | 查找替换 | str_replace() |
date_format | 时间戳格式化 | date() |
truncate | 截取字符串 | substr()或mb_substr() |
转成全大写:<{$tittle|upper}><br>
转成全小写:<{$tittle|lower}><br>
查找替换:<{$tittle|replace:"we":"we don't"}><br>
转成全大写:<{$tittle|upper}><br>
当前时间戳:<{time()}><br>
当前时间戳:<{$smarty.now}><br>
格式化时间戳:<{date('Y-m-d H:i:s',time())}><br>
格式化时间戳:<{$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}>
<{$tittle|truncate:10:''}><br>
<{$tittle|truncate:10}>