12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2019年8月13日23:33:01 评论 88 次浏览

模板引擎的工作原理

1、如何实现HTML代码和PHP代码分离?

实现HTML代码和PHP代码分离的目的是:实现前端设计人员和PHP程序员的分离
多数Web开发人员要么是精通网页设计,能够设计出漂亮的网页外观,但是编写的PHP代码很糟糕;要么仅熟悉PHP编程,能够写出健壮的PHP代码,但是设计的网页外观很难看。具备两种才能的开发人员很少见。
将PHP和HTML混合页面,分成两个独立的页面:
一个是HTML静态页面(视图文件、模板文件),扩展名是.html,包含HTML、CSS、JS
一个是纯PHP程序页面(控制器文件),扩展名是.php,主要PHP代码。
运行时,将HTML文件代码,包含到PHP文件中。
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2、如何完全去除视图文件中的PHP标记?

首先,视图中的典型PHP代码是这样的:

<?php echo $name ?>

再者,前端工程师能看得懂的、比较喜欢的HTML标签形式的代码是这样的:{$name}
最后,我们把

{$name} //替换成 
<?php echo $name ?>

就实现了PHP代码和HTML代码的完全分离。
模板引擎的原理:就是替换,就是将

{$name} //转换成 
<?php echo $name?>

才能被PHP识别并解析。
如何替换呢?使用PHP替换函数

str_replace()
将 ”{“ 替换成 ”<?php echo “
将”}”替换成”?>”

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、常用PHP模板引擎介绍

Smarty,是模板引擎鼻祖。其它的模板引擎都是基于Smarty开发的
Template Lite
TinyButStrong
XTemplate
Savant
phemplate
Dwoo
Sugar
Twig,symfony框架默认的模板引擎;
FXL Template
H2o
ns-template
Blade:laravel框架默认的模板引擎。

Smarty快速入门

1、Smarty是什么?

Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

2、Smarty下载和目录结构

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、实例:第1个Smarty案例

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty配置

1、Smarty左右定界符配置

在Smarty中,默认使用 "{" 和 "}" 作为变量的定界符。但这样,会与CSS、JS中的大括号冲突
左定界符:

$smarty->left_delimiter = "string"

右定界符:

$smarty->right_delimiter = "string"

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2、Smarty常用目录配置

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

查看Smarty常用目录配置:Smarty类文件中的__construct()构造方法
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty模板(视图)中的变量

1、Smarty普通变量

PHP中的所有变量,都可以在视图文件中使用;

$smarty->assign()

向Smarty模板传递普通变量;

$smarty->display()

显示指定的视图文件;
在Smarty模板中,使用"[ ]"或点"."来访问数组元素;
在Smarty模板中,使用"->"来访问对象的属性和方法。
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
特别说明:
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2、Smarty保留变量

(1)Smarty页面请求保留变量

{$smarty.get} //访问$_GET数组
{$smarty.post} //访问$_POST数组
{$smarty.request} //访问$_REQUEST数组
{$smarty.cookie} //访问$_COOKIE数组
{$smarty.session} //访问$_SESSION数组
{$smarty.server} //访问$_SERVER数组
{$smarty.files} //访问$_FILES数组

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

(2)访问PHP的预定义常量

语法:

语法:{$smarty.const.预定义常量}

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

(3)Smarty时间戳保留变量

语法:

{$smarty.now}

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、Smarty配置文件变量

(1)配置文件变量概述

网站上有一些比较简单的变量信息,美工人员可以自行定义并调用。这样可以脱离程序员的依赖,工作比较有主动权。

(2)定义配置文件

配置文件默认目录:./configs
设置配置文件目录:$smarty->setConfigDir()
读取配置文件目录:$smarty->getConfigDir()
配置文件扩展名:.ini或.conf
配置文件中注释:#
配置文件变量分组:[ ]
语法格式:配置名 = 变量值
变量不带$符号,变量值不带引号

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

(3)访问Smarty配置文件变量

载入配置文件:

{config_load file = “配置文件路径”}

语法格式一:{#配置文件变量名#}
语法格式二:{$smarty.config.配置变量}

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

(4)配置文件分组

载入分组配置文件变量:

{config_load file = “配置文件路径” section = “分组名”}

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty循环——foreach

1、foreach语法格式

语法格式1:

{foreach $arr as $key=>$value} {/foreach}

语法格式2:

{foreach from=$myarr  key="mykey" item="myitem"}{/foreach}

提示:foreach可以遍历所有类型的数组,包括:枚举数组、关联数组、混合数组。

2、实例:输出一维数组

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、实例:输出二维数组

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

4、foreach常用属性应用

**@key:输出当前值的索引,可能是整型索引,也可能是字符索引;
@index:当前数组索引,从0开始计算;
@iteration,当前循环的次数,从1开始计算;
@first:当首次循环时,值为true;
@last:当最后一次循环时,值为true;
@total:是整个循环的次数,可以在foreach内部或外部使用;
**12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty循环——section循环

1、section语法格式

Section循环就是PHP中的for循环。
PHP中的for循环对于foreach来说,有什么特点?

for循环可以控制循环起点,而foreach不可以;如:\(i = 1 或 \)i = 3
for循环可以指定步长值,而foreach不可以;如:\(i += 2 或 \)i += 3
for循环可以控制循环次数,而foreach不可以;如:\(count = 10 或 \)count = 5
注意:section循环只能遍历枚举数组。
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

name= 随便命名
loop=  最后一个循还号
start=  起点
step=  跳的值的个数
max= 较大输出几个值
show=

2、实例:输出一维枚举数组

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、实例:输出二维枚举数组

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

4、section控制循环起点、步长值

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty条件判断——if语句

1、if中运算符

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2、实例:当兵年龄判断

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、实例:表格隔行变色

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

Smarty变量调节器

1、Smarty变量调节器概述

变量修饰器可以用于格式化变量; 对变量进行格式化处理
使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称
修饰器可能还会有附加的参数以便达到效果。
参数会跟着修饰器名称,用:(冒号)分开。
同时,默认全部PHP函数都可以作为修饰器来使用 (不止下面的),而且修饰器可以被联合使用。
修饰器可以作用于任何类型的变量,数组或者对象。
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

2、Smarty中常用变量调节器

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

3、date_format调节器参数及应用

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

4、truncate调节器参数及应用

smarty中的truncate调节器,对应PHP的substr()函数或mb_substr()函数
substr()函数是按字节截取字符串;
mb_substr()函数是按字符截取字符串,但需要开启PHP的扩展
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

开启此扩展之后,truncate调节器代表mb_substr()函数,可以按照字符截取,方便截取汉字!如果不开启就是使用substr()函数,按照字节截取汉字,容易造成汉字变为乱码(utf8一个汉字是三个字节)

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

课后总结 Xmind

12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节
12、Smarty模板引擎 入门 配置 试图 循环 判断 变量调节

继续阅读
weinxin
加我微信
微信扫一扫,加我微信好友,共同交流,共同进步! (备注:焦国强博客)
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: