$tpl=new Smarty();//新建一个smarty对象,我使用的是Smarty-3.1.6版本

1.设置smarty模板路径$tpl->setTemplateDir();默认情况下是templates

2.设置smarty模板编译路径$tpl->setCompileDir();默认情况下是templates_c

3.设置smarty模板引擎的左右 分隔符,

$tpl->left_delimiter="<{";

       $tpl->right_delimiter="}>";

默认情况下:public $left_delimiter = "{";//smarty源代码

public $right_delimiter = "}";//smarty源代码

为什么我们要改这些分隔符?

  因为比如在较早版本smarty引擎模板中,会报错,不能自动识别。

比如:
<style>
     div{margin:0;}
 </style>
 或者 javascript中
<script>
   function show(){
              alert("smarty");
               }
 </script>

这两种情况下,都有“左右大括号”,smarty引擎碰到会报错

4.初始化操作我们可以在外部另外创建一个初始化操作的php文件,如:smarty.ini.php。然后在php文件中包括进来即可

       <?php

              include "../Smarty3.1.6/libs/Smarty.class.php";

              $tpl=new Smarty();

              $tpl->setTemplateDir("./Tpl");

              $tpl->setTemplateDir("./Compile");     

              $tpl->left_delimiter="<{";

              $tpl->right_delimiter="}>";

       ?>

5.使用smarty模板引擎的display函数或者include其他模板时,都得以smarty对象中指定的模板目录(比如:Tpl目录,默认是templates目录)为基目录

  ①模板目录是:Tpl,该目录下存放着很多模板,有default,green,red模板,default模板目录下有很多模板文件(index.tpl、header.tpl、footer.tpl),此时display的正确用法:$tpl->display(“default/index.tpl”);即基目录下的default模板目录

  ②在模板文件(如:index.tpl)中包含其他模板文件时(如:header.tpl、footer.tpl),include的正确写法应该是:<{include “default/header.tpl”}> 、<{include “default/footer.tpl”}>

  虽然index.tpl、header.tpl、footer.tpl都在同一个目录下,但是<{include “header.tpl”}> 、<{include “footer.tpl”}>是错误的写法,这种情况,smarty引擎会到Tpl目录下找header和footer,而不是在default下面查找

6.如果要想让各个目录下的PHP程序都可以加载Smarty和使用Smarty指定的模板目录和编译目录,唯一的办法是使用绝对路径

7.Smarty模板引擎中访问变量的方式(模板中的变量前记得加”$”符号)

①访问数组

  • 索引数组:

   $tpl->assign("arr",array("aa","bb","cc"));

    $tpl->assign("arr2",array(array("二维数组一一","二维数组一二"),array("二维数组二一","二维数组二二")));

     访问索引数组:<{ $arr[0] }>、<{ $arr[0] }>、<{ $arr[0] }>

   访问二维索引数组:<{ $arr2[0][0] }>、<{ $arr2[0][1] }>

  • 关联数组:(使用 . 符号来访问)

        访问关联数组:<{$arr3.id}>、<{$arr3.name}>、<{$arr3.age}>

②访问对象

  • 创建对象:   
class human{

              private $sex;

              private $name;

              private $age;

              public function __construct($s,$n,$a){

                     $this->sex=$s;

                     $this->name=$n;

                     $this->age=$a;

                     }

              public function print_info(){

                     return $this->sex."--".$this->name."--".$this->age;

                     }

              }

       $tpl->assign("student",new human("male","MarcoFly",22));

      给模板中的对象赋值:<{$student->print_info()}>

8.Smarty模板引擎中的数学运算可以应用到模板变量中

  • 给变量赋值

    $tpl->assign("num1",10);

    $tpl->assign("num2",5.5);

  • 模板变量输出

    <{$num1}> //结果10

    <{$num2}> //结果5.5

    <{$num1+$num2}> //结果15.5

    <{$num1+$num2*$num2/$num1}>//结果13.025

9.在模板文件中使用图片、css文件、js文件时,路径要以访问的php文件(如;index.php)路径为主,因为我们访问的是php文件,而模板文件 (如:index.tpl)是被包含在php文件中的

转载于:https://www.cnblogs.com/likwo/p/4604251.html

smarty访问数组中的数据,如果是关联数组直接用点.相关推荐

  1. numpy使用[]语法索引二维numpy数组中指定数据行的数值内容(accessing the specific row in numpy array)

    numpy使用[]语法索引二维numpy数组中指定数据行的数值内容(accessing the specific row in numpy array) 目录 numpy使用[]语法索引二维numpy ...

  2. numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array)

    numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array) 目录 numpy使用[]语

  3. python读取文件中的数据为二维数组变量_Numpy 多维数据数组的实现

    numpy包(模块)几乎总是用于Python中的数值计算.这个软件包为Python提供了高性能的向量.矩阵.张量数据类型.它是在C和Fortran中创建的,因此当计算被矢量化(用矩阵和矢量表示操作)时 ...

  4. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  5. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  6. php如何向数组增加数据,php向数组中增加数据的方法是什么

    php向数组中增加数据的方法是什么? 使用函数array_push array_push()函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $arra ...

  7. android 过滤数组中的重复元素,Flutter List数组避免插入重复数据的实现

    List 具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引) 常见列表 1.定长列表 默认值null 例如:List fixedLengthList = new List(2 ...

  8. java file数组 初始化_java从文件中读取数据并赋值给数组

    从txt文件中读取数据赋值给一维数组 字节流读入字节数组中 字节数组转化为字符串 字符创解析为字符串数组 字符串数组转化为数值,并赋值为数组 文本文件是以字节的形式储存的. 在txt文件中一个数字或者 ...

  9. C语言:使用冒泡算法将数组中的数据从大到小进行排序

    /*使用冒泡算法将数组中的数据从大到小进行排序*/ #include<stdio.h> #define N 5 int main() {int a[N];int i,j,t;printf( ...

  10. 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg

    假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含"1"数据位的个数,并将统计结果保存在res1数组中.数据段的代码定义如下 ...

最新文章

  1. 《Python编程初学者指南》——1.6 回到Game Over程序
  2. 这段时间没有好好的总结了
  3. 送外卖也要“黑科技”?阿里移动感知技术应用揭秘
  4. static的用法及其与auto的区别小结
  5. python的代码复用技术_Python__函数和代码复用
  6. MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
  7. 《算法之美》の链表问题の单向链表的反转
  8. 两个iphone怎么大量传照片_「唯物」传个视频到 iPhone,有了新方法
  9. 米粉期盼小米Civi推Pro版本:搭载骁龙870旗舰芯片
  10. for 2018.12.3
  11. post和get请求方式的区别
  12. 六石编程学:功能要定期测试
  13. EXCEL出错 8000401a
  14. 北航操作系统课程-20200409课堂小测-进程同步
  15. stm32蜂鸣器程序
  16. 02_如何计算叔块奖励
  17. 【手写源码-设计模式11】-享元模式-基于打麻将场景
  18. 提高软件开发效率的方法
  19. C++基础知识(上)
  20. cocos2d-x自代的Json库解析json(转)

热门文章

  1. JZOJ 5709. 【北大夏令营2018模拟5.13】数列
  2. JZOJ 4676. 【NOIP2016提高A组模拟7.21】模板串
  3. mysql数据首次导入hive_sqoop1.4.7环境搭建及mysql数据导入导出到hive
  4. 其利断金前一句是什么_绍兴晚报丨裘亚黎说|围城外的灵魂拷问:人为什么要结婚?...
  5. antd table设置表格一个单元格的字体颜色_微软Office三件套,各有一个效率神器,全都知道的人不超过1%...
  6. 拼数pascal程序
  7. mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...
  8. mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...
  9. pytorch argmax_一起无聊地用PyTorch刷爆sklearn的内置数据集吧(`?ω?′)
  10. http method