smarty访问数组中的数据,如果是关联数组直接用点.
$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访问数组中的数据,如果是关联数组直接用点.的更多相关文章
- thymeleaf的内联th:inline(在javascript访问model中的数据)
thymeleaf模板引擎为前端数据的获取提供了较大的便利,在html标签内可通过th标签加${}表达式访问model里的对象数据.但如果不想通过th标签而是简单地访问model对象数据,或是想在ja ...
- [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据
目录 概述 从控制器访问模型中的数据 强类型模型与@model关键字 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net M ...
- 关于iOS去除数组中重复数据的几种方法
关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方 ...
- php去除数组中重复数据
<?php /** * 去除数组中重复数据 * by www.jbxue.com **/ $input = array("a" => "green" ...
- php获取数组中重复数据的两种方法
分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...
- C语言一维数组中的数据随机排列
#include <stdio.h>#include <stdlib.h> void randomlize(int *a, int n){ int i = 0,j ...
- ASP.NET MVC3快速入门——第五节、从控制器访问模型中的数据
5.1 从控制器访问模型中的数据在本节中,我们将创建一个新的MoviesController类,并且书写代码来获取数据库中的数据,并通过视图模板来显示在浏览器中.鼠标右击Controller文件夹,点 ...
- 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 ...
- PHP如何将多维数组中的数据批量插入数据库?
PHP将多维数组中的数据批量插入到数据库中,顾名思义,需要用循环来插入. 1.循环insert into 语句,逐渐查询 <?php /* www.qSyz.net */ @mysql_conn ...
- MongoDB实现数组中重复数据删除
这个功能真的是写死我了,对于MongoDB一点都不熟悉,本来想使用spring与MongoDB的融合mongoDBTemplate,发现压根不是web项目,懒得配置那些配置文件,就使用最原始的数据库操 ...
随机推荐
- javascript学习8
JavaScript 浏览器检测 实例 检测浏览器及版本 使用 JavaScript 检测关于访问者的浏览器名称及其版本. 检测浏览器的更多信息 使用 JavaScript 检测关于访问者浏览器的更多 ...
- 把图片加载到BufferedImage中
把图片加载到BufferedImage 中有什么作用呢?它就可以利用 ImageIO.write(image, "JPEG", response.getOutputStream() ...
- Struts2 源码分析——项目分析
项目知识点分析 从上一章中我们知道了接下来我们要去了解源码的项目(struts2-showcase).而这一章将讲述我三年后在次接触struts2-showcase项目是一个什么样子的情况.我有一个工 ...
- [AngularJS] AngularJS系列(1) 基础篇
目录 什么是AngularJS? 为什么使用/ng特性 Hello World 内置指令 内置过滤器 模块化开发 一年前开始使用AngularJS(以后简称ng),如今ng已经出2了.虽说2已完全变样 ...
- 二维码详解(QR Code)
作者:王子旭链接:https://zhuanlan.zhihu.com/p/21463650来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2016.7.5 更新:长文 ...
- MVC上传文件
ASP.NET MVC上传文件是必段撑握的知识.加强训练才是.以前Insus.NET曾使用第三方MyAjaxForm.js :http://www.cnblogs.com/insus/p/378548 ...
- DevExpress的XtraReport和微软RDLC报表的使用和对比
我们开发程序的时候,经常会碰到一些报表,如果是Winform的报表,一般可以采用DevExpress控件组的XtraReport,或者微软的RDLC报表,当然还有一些其他的,在此不再赘述.由于本人在W ...
- javascript事件分类解析
最近在学习javascript,就顺便把常用事件给大家整理整理,也让自己加深印象.不足之处欢迎各位补充. 一般事件 onclick 鼠标点击时触发此事件 ondblclick 鼠标双击时触发此事件 ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
- .NET框架体系结构
刚开始接触.NET很疑惑,看完视频也不是太懂,通过总结和反复,从概括和概念入手,慢慢变得清晰了.这篇博客主要是我对.NET基础知识的了解,算作积累吧. .NET框架体系结构 由四个主要部分组成 ...