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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php 动态添加记录
Mar 10 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
php增删改查示例自己写的demo
Sep 04 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
laravel orm 关联条件查询代码
Oct 21 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP实现简单日历类编写
Aug 28 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+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
jQuery使用手册之一
2007/03/24 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
python中cPickle用法例子分享
2014/01/03 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
预备党员思想汇报
2014/01/08 职场文书
手机银行营销方案
2014/03/14 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
单独二胎证明
2015/06/24 职场文书
行政处罚听证告知书
2015/07/01 职场文书
转变工作作风心得体会
2016/01/23 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers