Smarty笔记、smarty常用配置 变量 循环与变量调节器

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}>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章