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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
给php新手谈谈我的学习心得
Feb 25 PHP
PHP连接SQLServer2005方法及代码
Dec 26 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 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 CURL模拟GET及POST函数代码
2010/04/25 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
python中dict使用方法详解
2019/07/17 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python 实现单例模式的5种方法
2020/09/23 Python
网络事业创业计划书范文
2014/01/09 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
给市场的环保建议书
2014/05/14 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python
小程序实现侧滑删除功能
2022/06/25 Javascript