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 相关文章推荐
FCKeditor的安装(PHP)
Jan 13 PHP
Smarty Foreach 使用说明
Mar 23 PHP
PHP学习 变量使用总结
Mar 24 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php之可变函数的实例详解
Sep 13 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP+jQuery实现即点即改功能示例
Feb 21 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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 MVC模式在网站架构中的实现分析
2010/03/04 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python制作Windows系统服务
2017/03/25 Python
Python分支结构(switch)操作简介
2018/01/17 Python
Python的多维空数组赋值方法
2018/04/13 Python
Selenium的使用详解
2018/10/19 Python
python Django的web开发实例(入门)
2019/07/31 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
计算机求职信
2013/12/01 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
清明节演讲稿
2014/05/27 职场文书
学校端午节活动方案
2014/08/23 职场文书
成绩单评语
2015/01/04 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python