php使用Smarty的相关注意事项及访问变量的几种方式


Posted in PHP onDecember 08, 2011

$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
原创文章
转载请注明:WEB开发_小飞

PHP 相关文章推荐
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
php cookis创建实现代码
Mar 16 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
解析PHP中$_FILES的使用以及注意事项
Jul 05 PHP
php+mysqli使用面向对象方式更新数据库实例
Jan 29 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 #PHP
PHP新手NOTICE错误常见解决方法
Dec 07 #PHP
PHPExcel读取Excel文件的实现代码
Dec 06 #PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 #PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
Dec 06 #PHP
PHP中文件缓存转内存缓存的方法
Dec 06 #PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 #PHP
You might like
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
jQuery的学习步骤
2011/02/23 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
js实现图片从左往右渐变切换效果的方法
2015/02/06 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
酒店节能降耗方案
2014/05/08 职场文书
跳槽求职信范文
2014/05/26 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
保研推荐信格式
2015/03/25 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
Python基础之函数嵌套知识总结
2021/05/23 Python
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js