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. Core Animation学习总结

    文件夹: The Layer Beneath The Layer Tree(图层树) The Backing Image(寄宿层) Layer Geometry(图层几何学) Visual Effec ...

  2. JavaScript:jklyDB

    ylbtech-JavaScript:jklyDB 1.返回顶部 1.jklyDB.sql -- ============================================= -- 军科 ...

  3. 给力开源,.Net开源地址大收集

    一.基础类库: 1,项目名:Npoi 资源星级:★★★ (个人评的) 介绍:NPOI - 一个能帮助你直接读写office文件流的库 系统教程:http://www.cnblogs.com/tonyq ...

  4. Use Multiple log4net Outputs from One Application

    Introduction This is an article simply to demonstrate how to use several output log files depending ...

  5. from String value ('{}'); no single-String constructor/factory

    需要为类增加一个接受String的构造函数: 例如: public class B { private String name; public B(String b) { } public Strin ...

  6. apacheh2.4和php5.5集成环境遇到的问题

    装了wampserver64位,里面的php是5.5,apache是2.4 1.配置虚拟主机时碰到问题:apache AH01630: client denied by server configur ...

  7. Ubuntu 安装nginx

    https://www.nginx.com/resources/admin-guide/load-balancer/ https://github.com/gplessis/dotdeb-nginx/ ...

  8. javascript promises powered by BlueBird

    什么是promises? 为什么需要promises? 参见: https://promisesaplus.com/ 使用示例: 使用promises之前,代码的编写方式: 使用promises之后: ...

  9. Source Insight 有用设置配置

    source insight代码对齐Tab键终极版 以前也写过一个source insight代码对齐,由于自己理解不够深刻,只能解决部分问题,不能根治在source insight中对齐的代码在XX ...

  10. 【spark 深入学习 05】RDD编程之旅基础篇-01

    ---------------- 本节内容 1.RDD的工作流程 2.WordCount解说  · shell版本WordCount  · java版本WordCount -------------- ...