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. java监控指定路径下文件及文件夹变化

    之前用jdk7的WatchService API(java.nio.file包)来做目录下的子文件监控,后改为使用commons-io包.主要有下面几点不同:1. WatchService是采用扫描式 ...

  2. grid - 显式网格

    显式网格布局包含:行.列 列 grid-template-columns page { color: #fff; } .grid { padding:1%; display: grid; grid-g ...

  3. 【NIO】Java NIO之缓冲

    一.前言 在笔者打算学习Netty框架时,发现很有必要先学习NIO,因此便有了本博文,首先介绍的是NIO中的缓冲. 二.缓冲 2.1 层次结构图 除了布尔类型外,其他基本类型都有相对应的缓冲区类,其继 ...

  4. 开发指南专题五:JEECG微云高速开发平台代码生成器

    开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...

  5. 【转】Java异常总结和Spring事务处理异常机制浅析

    异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,是Java语言健壮性的一个重要体现. Thorwable类所有异常 ...

  6. 第一部分:开发前的准备-第八章 Android SDK与源码下载

    第8章 Android SDK与源码下载 如果你是新下载的SDK,请阅读一下步骤了解如何设置SDK.如果你已经下载使用过SDK,那么你应该使用AVD Manager,来更新即可. 下面是构建Andro ...

  7. RHEL/CentOS 一些不错的第三方软件包仓库

    被Debian/Ubuntu惯坏了之后,再来用 RHEL/CentOS 实在是有点不习惯,软件都老且不说,关键是你还别嫌老(5年一个大版本的节奏真受不了啊,RHEL 6上面还是python 2.6), ...

  8. 【Unity】Protobuf的使用与常见问题

    Protobuf的使用流程 protobuf参考教程:https://www.jianshu.com/p/b135676dbe8d 手写.proto文件后,用CMD命令行运行protoc.exe编译器 ...

  9. Go Revel - Deployment(部署)

    ##概览 下面列出了部署的一些方法: 1.本地构建程序并拷贝至服务器 2.在服务器上获取更新代码,然后构建并运行 3.使用`Heroku`来管理部署 使用交互式的命令行会话来进行部署 - 通常需要一种 ...

  10. Python之获取微信好友信息

    save_info.py: #!/usr/bin/python # -*- coding: UTF-8 -*- import itchat import pickle itchat.auto_logi ...