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 相关文章推荐
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
探讨多键值cookie(php中cookie存取数组)的详解
Jun 06 PHP
处理单名多值表单的详解
Jun 08 PHP
配置php网页显示各种语法错误
Sep 23 PHP
thinkphp普通查询与表达式查询实例分析
Nov 24 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
PHP工程师VIM配置分享
Dec 15 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 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短网址和数字之间相互转换的方法
2015/03/13 PHP
CI框架常用函数封装实例
2016/11/21 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python标准库之collections包的使用教程
2017/04/27 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
浅谈django的render函数的参数问题
2018/10/16 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
毕业生就业推荐信范文
2013/12/01 职场文书
2014年安全生产责任书
2014/07/22 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书
详解MySQL中的主键与事务
2021/05/27 MySQL
服务器SVN搭建图文安装过程
2022/06/21 Servers