smarty模板技术分配变量的细节问题。
从php中获取数据
 
一句话:可以分配php支持的各种数据类型。
php: 基本数据类型 int double string bool
          复合数据类型 array object
 
          特殊数据类型  null resourse
 
调用从PHP分配的变量需在前加"$"符号.(译注:同php一样)
调用模板内的assign函数分配的变量也是这样.(译注:也是用$加变量名来调用)
 
Variables loaded from config files 
从配置文件读取的变量
 
什么时候考虑用这个:当某个变量值,不希望写死在程序中,就可以通过配置文件来获取。(常见的就是配置样式)
 
先写一个配置文件(该文件有一个格式)
key = 值
比如
my.conf
my.ini
 
title = "这是第一个网站";
bgcolor = "pink";
 
然后可以直接使用了
不需要a$smarty -> assign();这个步骤
也就是不需要分配
 
使用方法
test.tpl
{config_load file="路径"}//路径可以使用绝对路径或者相对路径
 
取值:
{#key值#}
案例:
<{config_load file = '../config/my.conf'}>
<h2><{#title#}></h2>
 
 
使用{$smarty}获取保留变量
<{$smarty.get.password}><br />
     <!-- <{$smarty.post.password}>
     <{$smarty.server.SERVER_NAME}> -->
     <{$smarty.server.SERVER_NAME}><br />
 
///////附上源文件
1.TestController.php
 <?php

     //创建smarty对象
require_once './libs/Smarty.class.php'; $smarty = new Smarty;//建立smarty实例对象$smarty
$smarty -> caching = false;//是否使用缓存
$smarty -> template_dir = "./templates";//设置模板目录
$smarty -> compile_dir = "./templates_c";//设置编译目录
$smarty -> cache_dir = "./smarty_cache";//缓存文件夹
//修改左右边界符号
$smarty -> left_delimiter="<{";
$smarty -> right_delimiter="}>"; /* 获取基本数据类型*/ $smarty -> assign("aa","hello");//获取字符串
$smarty -> assign("bb",567);//获取整数
$smarty -> assign("cc",56.7);//获取小数
$smarty -> assign("dd",true);//boolean值
$smarty -> assign("ee",false);//boolean值 /* 复合数据类型 */ //存放一维数组,数组一般是从数据库中取出
//这里先模拟数据
//1.普通的索引数组
$arr1 = array("北京","上海","杭州"); //2.关联数组
$arr2 = array("city1"=>"北京","city2"=>"上海","city3"=>"杭州"); //存放二维数组,一般从数据库提取,这里仅仅是模拟
//1.索引二维数组
$arr3 = array(array("北京","上海","杭州"),array("气温","房价","薪水"));
//2。关联二维数组(外面是索引,里面是关联)
$arr4 = array(array('id'=>'a001','email'=>'dada@gmail.com','age'=>25),array('id'=>'a002','email'=>'xixi@gmail.com','age'=>24)); //3。关联二维数组(外面,里面都是关联)
$arr5 = array('emp1'=>array('id'=>'a001','email'=>'dada@gmail.com','age'=>25),'emp2'=>array('id'=>'a002','email'=>'xixi@gmail.com','age'=>24)); //4。关联二维数组(外面是关联,里面是索引)
$arr6 = array('emp1'=>array('a001','dada@gmail.com',25),'emp2'=>array('a002','xixi@gmail.com',24)); $smarty -> assign("ff",$arr1);//
$smarty -> assign("gg",$arr2);//
$smarty -> assign("hh",$arr3);//
$smarty -> assign("ii",$arr4);//
$smarty -> assign("jj",$arr5);//
$smarty -> assign("kk",$arr6);// //对象的取法 class Master{
var $name;
var $address;
}
//实例化
$master = new Master;
$master -> name = "dada";
$master -> address = "海淀区"; class Dog{
var $name;
var $age;
var $color;
var $arr;
var $arr2;//二维数组
var $master;
function __construct($name,$age,$color,$arr,$arr2){
$this -> name = $name;
$this -> age = $age;
$this -> color = $color;
$this -> arr = $arr;
$this -> arr2 = $arr2;
}
} //实例化一个对象 $dog1 = new Dog("小马",4,"红色",$arr1,$arr4);
$dog1 -> master = $master; $smarty -> assign("ll",$dog1);// //希望把get/post/session/server的数据传递给tpl
// 传统
$username = $_GET['username'];
$smarty -> assign("username",$username);
//如果用smarty来写的话,可以直接去tpl页面获取 //指定用哪个模版显示
$smarty -> display("test.tpl");// ?>

2.test.tpl

 <{config_load file = '../config/my.conf'}>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
body{
2background: #ccc;
}
</style>
<link rel="stylesheet" href="css/css_base.css">
</head>
<body bgcolor = '<{#bgcolor#}>'>
<div>***********从配置文件读取的变量*************</div>
<h2><{#title#}></h2>
<h1>获取数据</h1>
<div>***********取出字符串*************</div>
<{$aa}>
<div>***********取出整数*************</div>
<{$bb}>
<div>***********取出小数*************</div>
<{$cc}>
<div>***********boolean值-真*************</div>
<{$dd}>
<div>***********boolean值-假(返回是空的,在php中空本来就代表假的)*************</div>
<{$ee}>
<div>*********** 一维数组(普通的索引数组)*************</div>
<{$ff[0]}>||<{$ff[1]}>||<{$ff[2]}> <div>*********** 一维数组(关联数组)***********</div>
<{$gg.city1}>||<{$gg.city2}>||<{$gg.city3}> <div>*********** 二维数组(索引数组)***********</div>
<{* $arr3[0][0]表示取出arr3二维数组的第一个数组元素中的第一个元素 *}>
<{$hh[0][0]}>||<{$hh[1][0]}>||<{$hh[0][2]}> <div>*********** 二维数组(关联数组,外面是索引,里面是关联)***********</div>
<{$ii[0].email}>||<{$ii[1].age}>||<{$ii[1].id}> <div>*********** 二维数组(关联数组)***********</div>
<{* 关联数组应该用.来操作,索引数组用的是[]操作 *}> <{$jj.emp1.email}>||<{$jj.emp1.age}>||<{$jj.emp2.id}> <div>*********** 二维数组(关联数组,外面是关联,里面是索引)***********</div>
<{$kk.emp1[0]}>||<{$kk.emp1[1]}>||<{$kk.emp2[0]}>||<{$kk.emp2[1]}> <{* 有多层数组嵌套的话,就不断递归处理 *}> <div>*********** 取出对象属性的值***********</div>
取出对象普通属性的值:<{$ll -> name}>||<{$ll -> age}>||<{$ll -> color}><br />
取出对象一维数组属性的值:<{$ll -> arr[0]}><br />
取出对象二维数组属性的值:<{$ll -> arr2[0].id}><br />
取出对象的对象属性的值:<{$ll -> master -> name}><br /><br />
<div>***********属性必须是公开的,不然取不出来**************</div>
<div>***********传统方法**************</div>
<{$username}><br />
<div>***********获取保留变量(get获取)**************</div>
<{$smarty.get.password}><br />
<!-- <{$smarty.post.password}>
<{$smarty.server.SERVER_NAME}> -->
<{$smarty.server.SERVER_NAME}><br />
<script src="js/js_base.js"></script>
</body>
</html>

3.my.conf

 title = "这是第一个网站"
bgcolor = "pink"
 
 
 
 

smarty模板操作变量的更多相关文章

  1. 三,Smarty模板技术/引擎——变量操作(2)

    1, 变量的分类 ① 从PHP中分配的变量,比如a.php跳转到b.php时候,可以在a.php中分配变量,b.tpl中直接调用.a.php中代码,$smarty->assign(‘str’,’ ...

  2. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  3. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  4. 12月15日smarty模板基本语法

    smarty基本语法: 1.注释:<{* this is a comment *}>,注意左右分隔符的写法,要和自己定义的一致. <{* I am a Smarty comment, ...

  5. SMARTY模板中如何使用get,post,request,cookies,session,server变量

    {$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间戳.直接访问PHP中 ...

  6. ThinkPHP3.2.3整合smarty模板(二)

    前言:继ThinkPHP3.2.3整合smarty模板(一)之后,继续来探讨一下tp框架整合smarty模板,看到有人在群上问到怎么使用自定义的常量,今天就具体来谈谈: 一.开发一个项目,必不可少会用 ...

  7. smarty 模板几个例子

    一.assign和display方法的使用以及几个变量调节器 header("content-type:text/html;charset=utf-8");//加载Smarty引擎 ...

  8. smarty模板引擎

    1.    使用smarty 1.1 项目引入 // 3, 连接数据库,提取相关数据 $title = "Smarty模板引擎"; $content = "Smarty模 ...

  9. Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

随机推荐

  1. ASP.NET Core -中间件(Middleware)使用

    ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...

  2. Intellij IDEA 自动清除无效 import 和 清除无效 import 的快捷键 ctrl+alt+o

    快捷键 ctrl+alt+o 自动清除的配置方法 可以settings-general-auto import-java项,勾选optimize imports on the fly,在当前项目下会自 ...

  3. 如何使用IconFont 图标

    第一步:使用font-face声明字体 @font-face {font-family: 'iconfont'; src: url('iconfont.eot'); /* IE9*/ src: url ...

  4. [Aaronyang紫色博客] 写给自己的WPF4.5-Blend5公开课系列 1

     我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 欢迎大家支持我的力作<[Aaronyang] 写给自己的 ...

  5. python列表中元素插入位置总结

    要完成的操作是把一个列表里的元素通过for循环添加到另外一个列表里,但是通过insert()方法添加到另外一个列表后却发现元素的位置与原始列表的颠倒了.如以下实例: li1 = ['] li2 = [ ...

  6. js数组相关知识集合

    一.js数组快速排序 <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; fun ...

  7. 修改ip导致服务不可用

    修改ip导致服务不可用 1.修改hostsvi /etc/hosts 修改ip地址 2.lsnrctl start 后会发现The listener supports no services,解决方案 ...

  8. 【iCore1S 双核心板_FPGA】例程十一:Modelsim仿真实验

    实验现象: 通过仿真波形,分析输入与输出的关系,可以清晰的看到所添加信号波形的变化与程序所写的一致. 核心代码: module modelsim( input CLK_12M, output FPGA ...

  9. 命令查看linux主机配置

    查看cpu: # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cp ...

  10. Android Things:撸起袖子来创建第一个Things工程

    http://blog.csdn.net/p106786860/article/details/60161020 ——————————————————————————————————————————— ...