$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文件中的

smarty访问数组中的数据,如果是关联数组直接用点.的更多相关文章

  1. thymeleaf的内联th:inline(在javascript访问model中的数据)

    thymeleaf模板引擎为前端数据的获取提供了较大的便利,在html标签内可通过th标签加${}表达式访问model里的对象数据.但如果不想通过th标签而是简单地访问model对象数据,或是想在ja ...

  2. [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据

    目录 概述 从控制器访问模型中的数据 强类型模型与@model关键字 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net M ...

  3. 关于iOS去除数组中重复数据的几种方法

    关于iOS去除数组中重复数据的几种方法   在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...

  4. php去除数组中重复数据

    <?php /** * 去除数组中重复数据 * by www.jbxue.com **/ $input = array("a" => "green" ...

  5. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  6. C语言一维数组中的数据随机排列

    #include <stdio.h>#include <stdlib.h> void randomlize(int *a, int n){        int i = 0,j ...

  7. ASP.NET MVC3快速入门——第五节、从控制器访问模型中的数据

    5.1 从控制器访问模型中的数据在本节中,我们将创建一个新的MoviesController类,并且书写代码来获取数据库中的数据,并通过视图模板来显示在浏览器中.鼠标右击Controller文件夹,点 ...

  8. js怎样得出数组中某个数据最大连续出现的次数

     1:js怎样得出数组中某个数据最大连续出现的次数 var test=[1,2,3,3,2,2,2,3,3,3,3,5,3,3,3,3,3] ;    var j  = 0 ;    var max  ...

  9. PHP如何将多维数组中的数据批量插入数据库?

    PHP将多维数组中的数据批量插入到数据库中,顾名思义,需要用循环来插入. 1.循环insert into 语句,逐渐查询 <?php /* www.qSyz.net */ @mysql_conn ...

  10. MongoDB实现数组中重复数据删除

    这个功能真的是写死我了,对于MongoDB一点都不熟悉,本来想使用spring与MongoDB的融合mongoDBTemplate,发现压根不是web项目,懒得配置那些配置文件,就使用最原始的数据库操 ...

随机推荐

  1. SQL Server在执行SQL语句时,表之间驱动顺序对性能的影响

    环境:SQL Server2012 SP3 企业版,开发服务器,并没有什么负载,全库索引统一Rebuild过 经反复执行验证过, 不算太复杂的SQL(存储过程中代入参数抠出来的SQL代码) 默认情况下 ...

  2. maven中使用junit老是找不到包

    如题,烦恼好久,突然看到scope一直是test,改成compile就好了. compile (编译范围) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在 ...

  3. 关于WEB Service&WCF&WebApi实现身份验证之WEB Service篇

    在这个WEB API横行的时代,讲WEB Service技术却实显得有些过时了,过时的技术并不代表无用武之地,有些地方也还是可以继续用他的,我之所以会讲解WEB Service,源于我最近面试时被问到 ...

  4. JavaScript最佳实践

    作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5540469.html 举个例子:用户在点击某个链接的时候弹出一个新窗口 弹出窗口的方法采用:wind ...

  5. [译]学习IPython进行交互式计算和数据可视化(四)

    第三章 使用Python进行数字计算 尽管IPython强大的shell和扩展后的控制台能被任何Python程序员使用,但是这个工具最初是科学奖为科学家设计的.它的主要设计目标就是为使用Python进 ...

  6. JAVA - HashMap和HashTable

    1. HashMap 1)  hashmap的数据结构 Hashmap本质就是一个数组,只是当key值重复时,使用链表的方式来存储重复的key值(拉链法),注意:链表中存放的仍然是key值.如下图示: ...

  7. Wamp 简单使用方法

    1.在wamp的安装目录 \bin\apache\Apache2.4.4\conf 中找到  httpd.conf文件删除 Include conf/extra/httpd-vhosts.conf 这 ...

  8. 【转载】lucene中Field.Index,Field.Store详解

    lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZE ...

  9. JS实现日程安排 日程安排插件

    代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EmpWeekPla ...

  10. C# redis使用之ServiceStack

    需要注意的是:ServiceStack.Redis 中GetClient()方法,只能拿到Master redis中获取连接,而拿不到slave 的readonly连接.这样 slave起到了冗余备份 ...