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 相关文章推荐
社区(php&amp;&amp;mysql)六
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
相对路径转化成绝对路径
Apr 10 PHP
php实现的遍历文件夹下所有文件,编辑删除
Jan 05 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
PHP 事件机制(2)
Mar 23 PHP
PHP数据过滤的方法
Oct 30 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
PHP实现添加购物车功能
Mar 06 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 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执行速度全攻略(上)
2006/10/09 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python生成器以及应用实例解析
2018/02/08 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
人事专员岗位职责说明书
2014/07/30 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
寻找成龙观后感
2015/06/12 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
装修安全责任协议书
2016/03/22 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫