Smarty3模板引擎初步使用

发布于 2020-07-08  157 次阅读


1.引入Smarty3的libs库文件

库在此下载

https://github.com/smarty-php/smarty/releases/tag/v3.1.34

下载后引入

include_once "./libs/Smarty.class.php";

2.Smarty和thymeleaf的不同之处

实例化一个对象,并且设置键值对,最终通过display方法将变量绑定在模板文件上面

    $smarty = new Smarty();
    $smarty -> assign("name","wangshilong");
    $smarty -> assign("age",20);
    $smarty -> assign("users",array(
        array("name"=>"wang","bir"=>2000,"age"=>20),
        array("name"=>"li","bir"=>2000,"age"=>20),
        array("name"=>"zhang","bir"=>2000,"age"=>20),
        array("name"=>"pan","bir"=>2000,"age"=>20),
        array("name"=>"xie","bir"=>2000,"age"=>20)
    ));
    $smarty -> display("view.html");

由此可见,Smarty对象很像是thymeleaf中的Model对象,用于在Controller和View中进行传值;比thymeleaf更强大的是,Smarty引擎可以很方便的自定义模板中的分隔符

    {$name} //这是本来的分隔符
    $smarty -> setLeftDelimiter("<{");
    $smarty -> setRightDelimiter("}>");

通过设置左右分隔符,Smarty可以有效避免很多的符号冲突,

出了分隔符,Smarty还有几个常用的目录设置

    $smarty -> setTemplateDir("./templatedir");   //模板文件目录
    $smarty -> setCompileDir("./compiledir");   //编译目录
    $smarty -> setConfigDir("./conf");  //配置文件目录

3.常用的foeach

            <{foreach $users as $key => $user}>
            <tr>
                <td><{$key}></td>
                <td><{$user.name}></td>
                <td><{$user.bir}></td>
                <td><{$user.age}></td>
            </tr>
            <{/foreach}>

这个没啥好说的,只是千万要记得,分隔符和【关键字】、【变量】之间不要有空格,否则无法解析!

4.if、elseif

判断条件如下:

运算符 别名 语法示例 含义 对应PHP语法
== eq $a eq $b 等于 ==
!= ne, neq $a neq $b 不等于 !=
> gt $a gt $b 大于 >
< lt $a lt $b 小于 <
>= gte, ge $a ge $b 大于等于 >=
<= lte, le $a le $b 小于等于 <=
=== $a === 0 绝对等于 ===
! not not $a 非 (一元运算) !
% mod $a mod $b 取模 %
is [not] div by $a is not div by 4 取模为0 $a % $b == 0
is [not] even $a is not even [非] 取模为0 (一元运算) $a % 2 == 0
is [not] even by $a is not even by $b 水平分组 [非] 平均 ($a / $b) % 2 == 0
is [not] odd $a is not odd [非] 奇数 (一元运算) $a % 2 != 0
is [not] odd by $a is not odd by $b [非] 奇数分组 ($a / $b) % 2 != 0

 

使用例:

  <div>
      <{if isset($name)}>
        <{$age}>
      <{/if}>
  </div>

 


忍耐无法忍耐的事物,才是真正的忍耐。