Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件

首先,站在前端开发人员的角度使用smarty。包括定界符、注释、变量和函数(内置函数、变量修饰器和函数插件)。
1.定界符
和html标签类似,


在smarty中,默认的定界符是{},

注意:
任何在定界符之外的内容,都是静态的,是不会被解析的(包括php代码)
{ 和 $ 中间不能有任何空格,否则将不会解析。(右边则是可以的)
如果在页面中有css和js,会怎么样呢?
默认的定界符是可以修改的

如何解决{的冲突
a. 所有以{ 开头的地方,加空一格
b. 将css和js以外部的方式引入
c. 使用内置函数 literal
d. 更改定界符
在这里插入图片描述
修改之后,应该这么使用:
在这里插入图片描述
实际上,修改定界符比较麻烦,最好的做法,使用默认的,将css和js以外部的方式来引入,如果在页面中需要单独书写css和js,用literal标签包含即可。
2.注释
格式:左定界符* 内容 *右定界符 如 {* 内容 *}
在这里插入图片描述
3.变量—比较重要
在模板中可以使用的变量有哪些?通常有三种来源:
在php中通过assign方法分配过来的。(90%以上)
保留变量
配置变量
(1).通过assign分配过来的变量
直接使用assign方法分配即可,写法如下:
$smarty->assign(名,值);
重点是,分配的变量有哪些表现形式?
回顾:php中,有哪些数据类型?422阵型
4种标量类型,整型、浮点型、字符串、布尔
2种复合类型,数组和对象
2种特殊类型,资源和NULL
标量就是单个值的意思,一个变量只能表示一个值。
资源类型和NULL根本就不需要。
对象是可以使用的,但是一般不建议分配。
结论:就是标量类型和数组。5种,实际上就是两种,标量和数组。
标量比较简单,直接输出即可
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第1张图片
结果如下:
在这里插入图片描述
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第2张图片
注意,布尔类型,在echo的时候,echo后面的参数一定是字符串,如果不是,会自动隐式转换。True转成1,false转成空。
数组是重点
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第3张图片
然后在模板页面中,输出
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第4张图片
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第5张图片
实际上,不管是关联数组还是索引数组,其实处理方式是一样的。都可以使用[]和.的方式来访问。
[思考]:关联数组和索引数组有何区别?
实际上没有什么区别。
索引数组只不过是关联数组的一种特例,特殊之处就在于下标是连续的数字。
对象也是可以分配的,但一般不使用。
(2).保留变量
首先,它是无需分配的。直接在模板中使用即可。
包括Smarty本身的以及超级全局变量。
在这里插入图片描述
其中,常量是需要先定义才可以的,但是无需分配。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第6张图片
显示结果如下:
在这里插入图片描述

smarty中调用seesion的方法,{$smarty.session.键}举例:{$smarty.session.admin_name}.
(3).配置变量
有些数据,其实是可以交给前端开发人员自行来定义的。比如我们的网站的一个版权信息。
此时,作为前端开发人员,可以使用配置变量的这种方式。(常量,节)

在哪儿配置?
参考demo,如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第7张图片
我们也创建一个configs文件夹,并创建一个site.conf文件,如下
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第8张图片
配置的格式是怎么样的?
参考test.conf,如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第9张图片
名 = 值
按照这种格式配置如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第10张图片
如何使用配置呢?

首先需要载入配置,config_load file = 配置文件名
引用格式有两种:
{#配置名#}
{$smarty.config. 配置名}
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第11张图片
结果如下:
在这里插入图片描述
我们还可以配置段/节
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第12张图片
使用的时候,需要指明使用哪个节,如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第13张图片
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第14张图片
结果如下:
在这里插入图片描述
4.内置函数
为什么需要内置函数?
在页面中输出数据的时候,不能避免对业务逻辑的一些处理,比如需要循环输出,有时候还需要一些判断,所以还需要进一步处理,此时就需要用到函数。
Smarty提供的常见的内置函数
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第15张图片
重点县关注以下三个
(1).if/else
选择结构。和php中if/else几乎是一样的。唯一不同的是现在是使用smarty语句来书写的。
{if},{elseif},{else}
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第16张图片
看一个实际案例。
根据你的智商指数,给你一个选择练功的秘籍。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第17张图片
对应的模板文件如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第18张图片
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第19张图片
注意细节
每个{if} 都必须有一个配对的 {/if}
所有在php中使用的条件表达式和函数都可以在{if} 内使用
在smarty模板标签中,可以进行数学运算的
(2).foreach
重中之重
处理数组的情况最多,一维数组、二维数组、多维数组。
foreach是使用做多的。
格式有两种,如下:
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
先看一维数组
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第20张图片
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第21张图片
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第22张图片
再看一下二维数组
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第23张图片
在模板中,输出如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第24张图片
注意,在输出指定字段的时候,分别使用了[]和.这两种方式。
效果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第25张图片
此时,我们可以结合if语句完成隔行换色功能
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第26张图片
然后定义odd的样式,如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第27张图片
效果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第28张图片
实际上,我们的foreach还提供了一些属性,方便我们使用。
{foreach}还有一些属性,非常有用,有以下6个
@index , 当前数组索引,从0开始计算
@iteration,当前循环的次数,从1开始计算
@first,首次循环时,该值为true
@last,循环到最后一次时,该值为true
@total,总的循环次数,可在foreach内部使用,也可以在循环完成之后使用
@show,在foreach循环执行完之后,检测循环是否显示数据的判断

看一个实际开发中的场景
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第29张图片
保证左右边的对齐
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第30张图片
注意细节
还带一个 {foreachelse}的分支,当$arr中没有内容时会执行
smarty 2写法 {foreach from = $arr key = “key” item=“value”} 也是可以支持的
(3).section
也是用来循环的。只能遍历数字连续的索引数组。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第31张图片
在模板中,输出
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第32张图片
其中,name就是下标,而loop则是循环的次数。name中的值要和star[]中值相同,可以通过下标来访问我们的数组元素。
如果是关联数组,则会报如下错误:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第33张图片
在这里插入图片描述
结论:不要用section来遍历关联数组。
还需要注意一点,就是loop的取值可以是分配过来的数组的名字。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第34张图片
实际上,我们一般只写数字的名字,很少会直接写某个具体的值。
注意细节
loop 后面接的通常是 分配过来的数组,也可以直接写一个数字,如果接的是一个数组,则会计算其长度,作为其循环总次数。
而item 相当于数组的索引值,即 0 ,1, 2,这样的索引值。
和foreach类似,可以使用 index、iteration、first、last、total等属性,访问方式 KaTeX parse error: Expected '}', got 'EOF' at end of input: …如,我们直接在模板层面来使用{smarty.now},但是显示效果不直观,需要进一步处理。
对于这些情况,我们可以使用变量修饰器,有时候也称之为变量调节器。
Smarty提供的变量修饰器如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第35张图片
看一个例子,
在这里插入图片描述
显示结果如下:
在这里插入图片描述
如果有多个参数呢,只需要使用:隔开即可。
如truncate的使用。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第36张图片
在这里插入图片描述
再看一个特殊的用法
指定输出次数的 字符串,如输出10次hello。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第37张图片
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第38张图片
除了smarty自带的一些调节器之外,php中的函数也是可以直接使用的
可以在一个变量上使用多个变量调节器,多个之间使用 | 隔开即可
6.函数插件
作为前端开发人员,经常需要根据分配过来的变量,输出各种表现形式的html,如表单、表格等.
除了可以使用 foreach 来输出这些内容之外,smarty 还 自带了一些自定义的函数插件,可以在模板内使用。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第39张图片
(1).单选html_radios
用于生成单选框组
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第40张图片
示例
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第41张图片
对应的模板编写如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第42张图片
显示效果:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第43张图片
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第44张图片
(2).复选 html_checkboxes
用于生成复选框组
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第45张图片
案例
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第46张图片
对应的模板编写如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第47张图片
最终效果:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第48张图片
(3).下拉列表html_options
用于生成下拉列表
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第49张图片
案例
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第50张图片
对应的模板编写如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第51张图片
查看效果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第52张图片
(4).cycle
用于循环交替某些值。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第53张图片
使用它可以实现隔行换色。
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第54张图片
对应的模板编写如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第55张图片
结果如下:
Smarty基本语法 定界符 注释 变量 内置函数 变量修饰器 函数插件_第56张图片

你可能感兴趣的:(smarty)