Smarty基本语法

来源:互联网 发布:usleep函数 linux 编辑:程序博客网 时间:2024/05/19 13:17


Smarty基本语法

 

站在前端开发人员的角度使用smarty。包括定界符、注释、变量和函数。

1.定界符

Smarty默认的定界符是 {}

使用细节:

1.任何在定界符之外的内容,都是静态的,是不会被解析的(包括php代码)。

2.{ 和 $ 中间不能有任何空格,否则将不会解析。

3.如果在页面中有css和js,会怎么样呢?

4.默认的定界符是可以修改的。

出现了css和js的冲突,该如何处理?

a. 所有以{ 开头的地方,都空一格

b. 将css和js以外部的方式引入

c. 使用内置函数 literal

d. 更改定界符

更改定界符:

 

在模板中使用,如下:

解决冲突最好的方式:外部引入css和js,对于内部出现的使用literal。

2.注释

格式:左定界符* 注释内容 *右定界符

注释的内容,会被过滤掉。

注释不能嵌套。

3.变量

变量就是在模板中,可以使用的某个符号,它保存了一些数据。

变量的来源有如下三种:

1. 通过PHP程序中的assign函数分配过来

2.保留变量

3. 配置变量

 其中保留变量和配置变量无需在php中分配,直接在模板中使用的。

 (1).assign变量(重点)

使用最多的。

重点是我们分配的变量有一些类型的?

复习:php中的数据类型 --- 8种

422阵容

4:四种标量类型,整型、浮点型、字符串、布尔型

2:两种复合类型,数组、对象

2:两种特殊类型,资源和null

标量类型,简单来说,就是只能表示单个值,$a = 100,$b= ‘smarty’

复合类型,意味着一个变量可以表示多个值。$arr = array(100,’smarty’,true)

在smarty中,您认为哪些类型是适合分配的,哪些是不合适的?

 不合适的:资源,对象,null。

结论:标量类型和数组类型是经常需要分配的。

echo 变量

对于变量有要求,一定是字符串类型,如果不是,则需要隐式转换。

false -> ‘’

数组-> Array

模板中代码如下:

结果如下:

说明一件事情:在php中,索引数组和关联数组本质上是一样的。只不过对于索引数组而言,它的下标都是数字,所以可以去掉那个引号

(2).保留变量

无需在php中分配,直接可以在模板页面中使用的变量。包括php中的超级全局变量,比如$_GET,$_SERVEER,还有smarty自带的一些变量。

使用格式:{$smarty.保留变量名}

案例

 

在模板中使用保留变量

结果如下:

(3).配置变量

无需在php程序中分配的,但和保留变量,它是通过配置文件配置的。

在哪里配置?

参考demo文件夹

我们也创建一个configs文件夹,并创建一个site.conf文件,如下:

配置文件该怎么写?

直接打开test.conf如下:

和php.ini相似

自己创建配置如下:

如何来使用配置变量

首先,需要在模板中使用config_load函数引入该配置

然后,在模板中使用如下格式引用具体变量:

{#配合项名#}

{$smarty.config.配合项名}

在模板中输出如下:

结果如下:

注意细节

配置变量必须先载入配置文件才能使用,使用config_load函数载入

 

配置信息可以分段设置,此时需要在引入时使用section指定段名(对比php.ini)

 

可以在配置文件中添加注释

4.内置函数

函数,根据功能的不同,在smarty中将函数分成三大类:

内置函数

变量修饰器

函数插件(自定义函数)

为什么需要内置函数?

针对一些复杂的输出,是需要借助于内置函数才可以。

好有一些其他的功能,比如config_load,literal等。

常用的内置函数有哪一些?

(1).if/else

 和php中的完全一样。也是用来实现选择结构的。

{if},{elseif},{else}

必须有配对的{/if}

 全部的PHP条件表达式和函数都可以在if内使用

 

编写一个案例

模板中编写如下:

结果如下:

注意细节

每个{if} 都必须有一个配对的 {/if}

所有在php中使用的条件表达式和函数都可以在{if} 内使用

在smarty模板标签中,可以进行数学运算的

(2).foreach

重头戏。使用最多的一种。

Foreach是用于循环遍历的。

语法格式如下:

{foreach $arrayvar as $itemvar}

{foreach $arrayvar as $keyvar=>$itemvar

看案例

在模板中使用foreach输出如下:

结果如下:

{foreach}还有一些属性,非常有用,有以下6个

ü @index , 当前数组索引,从0开始计算

ü @iteration,当前循环的次数,从1开始计算

ü @first,首次循环时,该值为true

ü @last,循环到最后一次时,该值为true

ü @total,总的循环次数,可在foreach内部使用,也可以在循环完成之后使用

ü @show,在foreach循环执行完之后,检测循环是否显示数据的判断

案例:实现表格隔行换色

在模板中输出如下:

效果如下:

注意细节

还带一个 {foreachelse}的分支,当$arr中没有内容时会执行

smarty 2写法 {foreach from = $arr key = "key" item="value"} 也是可以支持的

(3).section

用来循环的。

只能循环索引数组(下标是连续的),对于关联数组是不能使用的。

其中name的值就是 对应 数组的 下标,具体来说,就是0,1,2,3....

loop的值,其实就是要循环的次数,通常是一个整型,也可以使用数组作为它的值如果是数组,则会使用count函数对数组进行统计,将结果作为循环的值

案例:

在模板中编写如下:

输出结果如下:

注意细节

loop 后面接的通常是 分配过来的数组,也可以直接写一个数字,如果接的是一个数组,则会计算其长度,作为其循环总次数。

而item 相当于数组的索引值,即 0 ,1, 2,这样的索引值。

和foreach类似,可以使用 index、iteration、first、last、total等属性,访问方式 $smarty.section.name.index,其中name就是name属性的值。

记住,foreach和section的区别

foreach可以遍历任意数组,而section只能遍历连续的索引数组。

在一个循环中,遍历多个数组,使用section会方便一点。

效果:

5.变量修饰器

通常情况下,在模板页面中,直接输出从php程序中分配过来的变量,也有一些特殊的情况,需要对分配过来的变量/保留变量 进行再次处理。

Smarty提供了变量修饰器。

 

[需求]:输出当前时间。

Smarty提供的变量修饰器,如下:

实际上,除了这些之外,所有的php函数都可以作为变量修饰器来使用。

格式如下:{处理的内容|变量修饰器:参数1:参数2:参数3}

可以同时使用多个变量修饰器。

还有一个不常见的用法。

[需求]:输出指定次数(php程序中来分配的一个变量)的字符串hello。

在模板中输出如下:

结果如下:

注意细节

除了smarty自带的一些调节器之外,php中的函数也是可以直接使用的

可以在一个变量上使用多个变量调节器,多个之间使用 | 隔开即可

可以自定义变量修饰器函数

6.函数插件

在手册中叫自定义函数。

作为前端开发人员,经常需要根据分配过来的变量,输出各种表现形式的html,如表单(比如radio、checkbox、select)、表格等。

(1).单选框

html_radios

案例

在模板中输出如下:

结果如下:

(2).复选框

html_checkboxes

用来生成复选框组。

案例

在模板中编写如下:

显示效果如下:

(3).下拉列表

html_options,用于生成下拉列表

案例

在模板中输出

显示效果:

(4).cycle

用于交替循环某些值。

[需求]:实现表格的隔行换色。

在模板中编写如下:

效果如下:

当然,我们也可以循环交替更多的值,如下:

生成的结构如下:

 

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 除湿的食物 怯湿 去湿的食物有哪些 怎样祛湿 怎么去湿 什么祛湿 怎么祛湿 祛湿食品 祛湿中成药有几种 除湿食物有哪些 除湿吃什么 去湿食谱 袪湿 除湿食物 什么食物祛湿 祛湿的作用 吃什么可以去湿 去湿食疗 祛湿的药有哪些 祛湿的方法有哪些 祛湿吃什么药 祛湿的方法 湿 吃什么去湿 祛湿是什么意思 去湿健脾 怎么样祛湿 祛湿食谱 什么东西祛湿 去寒湿的食物 祛湿贴 食疗祛湿 祛湿的穴位 怎样去湿 祛湿汤料配方 祛湿药物 阹湿 祛湿的菜 祛湿排毒粥 快速祛湿的方法 祛湿方法