php中Smarty 访问变量的几种方式

$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

时间: 2024-08-28 12:00:43

php中Smarty 访问变量的几种方式的相关文章

Smarty 访问变量的几种方式及事项

$tpl=new Smarty();//新建一个smarty对象,我使用的是Smarty-3.1.6版本 1.设置smarty模板路径$tpl->setTemplateDir():默认情况下是templates 2.设置smarty模板编译路径$tpl->setCompileDir();默认情况下是templates_c 3.设置smarty模板引擎的左右 分隔符,  代码如下 复制代码        $tpl->left_delimiter="<{";    

php使用Smarty的相关注意事项及访问变量的几种方式_php模板

$tpl=new Smarty();//新建一个smarty对象,我使用的是Smarty-3.1.6版本1.设置smarty模板路径$tpl->setTemplateDir():默认情况下是templates2.设置smarty模板编译路径$tpl->setCompileDir();默认情况下是templates_c3.设置smarty模板引擎的左右 分隔符,        $tpl->left_delimiter="<{";        $tpl->r

Android平台中实现数据存储的5种方式_Android

本文介绍Android中的5种数据存储方式,具体内容如下   数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:  1 使用SharedPreferences存储数据  2 文件存储数据  3 SQLite数据库存储数据  4 使用ContentProvider存储数据  5 网络存储数据   下面将为大家一一详细介绍.   第一种:使用SharedPreferences存储数据  SharedPreferences是Android平台上一个轻量级

用excel高级筛选中选择不重复记录两种方式的差异图解

  excel中高级筛选中选择不重复记录两种方式的差异 高级筛选分为两种方式 在原有区域显示筛选结果 将筛选结果复制到其他位置 在原有区域显示筛选结果被筛选掉的行只是被隐藏了 第二种方式 将筛选结果复制到其他位置 被筛选掉的行已经是被删除的 选中数据区域 观察这个数据区域中有两个行是有重复的 并且分别出现过两次 而且是挨着的 鼠标点按a1单元格 拖动鼠标到e25单元格 松开鼠标 点击菜单栏 数据 筛选 高级筛选命令 在弹出的高级筛选对话框的方式 选择为将筛选结果复制到其他位置 点击复制位置后面的

从流程的自动化中获得最大价值的10种方式

本文讲的是 :从流程的自动化中获得最大价值的10种方式,流程自动化很好,如果它可以节省时间并减少错误.但是如果它不能在业务流程中"很好地契合",那么会难以得到普及.问问有谁没有对语音助手感到伤脑筋. 所幸的是,某些最佳实践让你可以从流程自动化中获得最大价值,以下就是其中的10项. 1.保持简单 一个流程自动化项目越复杂,那么就会出现越来越多的故障点,就越难以修复.当数据切换简单易行,你不要做太多干预的时候,自动化的效果是最好的. 2.如果是语音自动化,必须是单音节! 转向采用基于语音技

ajax中data传参的两种方式分析

本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

ajax中data传参的两种方式分析_AJAX相关

本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

android中Webview实现截屏三种方式小结

本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

Php中smarty常用变量学习笔记

现在开发网站时用到了smarty框架模板,感觉非常好用,较好实现了php源码和html代码的分离.现在分享smarty的一些常用变量. 1.SMARTY_DIR     Smarty目录 定位Smarty类文件的完整系统路径,如果没有定义Smarty目录,Smarty将会试着自动创建合适的值.如果定义了,路径必须要以斜线结束. define("SMARTY_DIR","/usr/local/lib/php/Smarty/"); require_once(SMARTY