smarty 从配置文件读取变量
smarty变量分3种:
Variables [变量]
- Variables assigned from PHP [从PHP分配的变量]
- Variables loaded from config files [从配置文件读取的变量]
- {$smarty} reserved variable [{$smarty}保留变量]
从配置文件获取的变量
从配置文件获取的变量,可以通过 井号引用起来访问如#hash_marks#, 或者通过Smarty变量$smarty.config来访问。 后者在使用其他属性或者是访问别的变量值时比较有用,如$smarty.config.$foo。
Example 4.7. 配置变量
配置文件foo.conf例子:
pageTitle = "This is mine"
bodyBgColor = '#eeeeee'
tableBorderSize = 3
tableBgColor = "#bbbbbb"
rowBgColor = "#cccccc"
示范使用#hash#方式的模板:
{config_load file='foo.conf'}
<html>
<title>{#pageTitle#}</title>
<body bgcolor="{#bodyBgColor#}">
<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}">
<tr bgcolor="{#rowBgColor#}">
<td>First</td>
<td>Last</td>
<td>Address</td>
</tr>
</table>
</body>
</html>
示范使用$smarty.config方式的模板:
{config_load file='foo.conf'}
<html>
<title>{$smarty.config.pageTitle}</title>
<body bgcolor="{$smarty.config.bodyBgColor}">
<table border="{$smarty.config.tableBorderSize}" bgcolor="{$smarty.config.tableBgColor}">
<tr bgcolor="{$smarty.config.rowBgColor}">
<td>First</td>
<td>Last</td>
<td>Address</td>
</tr>
</table>
</body>
</html>
上面的例子都可以输出:
<html>
<title>This is mine</title>
<body bgcolor="#eeeeee">
<table border="3" bgcolor="#bbbbbb">
<tr bgcolor="#cccccc">
<td>First</td>
<td>Last</td>
<td>Address</td>
</tr>
</table>
</body>
</html>
配置变量必须先载入配置文件才能使用。 这个过程会本文档的{config_load}说明里面解释。
参见 变量 和 $smarty保留变量
参考:http://www.smarty.net/docs/zh_CN/language.config.variables.tpl
再说一下配置文件:
Chapter 9. 配置文件
配置文件可以让设计者将全局的模板变量以文件形式管理起来。 其中一个例子是管理模板的颜色值: 通常如果你需要从程序中更改颜色主题,那么你需要找到每个模板文件, 并且修改它们的颜色值。 通过配置文件,颜色值被统一放置到配置文件内,你只需要修改这个文件即可。
Example 9.1. 配置文件语法示例
# global variables
pageTitle = "Main Menu"
bodyBgColor = #
tableBgColor = #
rowBgColor = #00ff00 [Customer]
pageTitle = "Customer Info" [Login]
pageTitle = "Login"
focus = "username"
Intro = """This is a value that spans more
than one line. you must enclose
it in triple quotes.""" # hidden section
[.Database]
host=my.example.com
db=ADDRESSBOOK
user=php-user
pass=foobar
配置文件中的配置变量可以被引用起来,但不是必须的。 你可以使用单引号或者双引号。 如果有的值会跨度不止一行的,那么你需要用三引号(""")把它们括起来。 你可以将任何形式的注释放到配置文件中,但这不是有效的配置文件语法。 我们建议使用# (井号) 来作为注释行的开头。
上面配置文件的例子有两段。 段落的名字用[方括号]括起来。 段落名称可以是任意字符,但不包括[ 或 ]符号。 最顶部的四个值是全局变量,也就是不在段落内的变量。 这些全局变量将总是被载入。 当一个特定的段落被载入,那么段落的变量以及全局变量都会被载入。 如全局变量和段落变量都有同样的变量,那么将使用段落的变量。 如有相同的两个变量在同一个段落,最后一个将会被使用,除非 $config_overwrite设置被关闭。
配置文件可以使用内置的函数 {config_load}来载入,或者通过configLoad()函数进行载入。
你可以通过在变量名或段落名前面加上点号(.),来隐藏变量或者整个段落,如[.hidden]。 这个技巧在你的程序使用配置文件保存一些敏感信息,但这些信息又不希望模板引擎使用时,非常有用。 如果是第三方来对模板进行修改,你也可以保证他们不会在载入配置文件时,读取到这些敏感信息
配置文件(或资源)将使用相同的模板资源来进行载入。 这意味着配置文件还可以从数据库中载入,如$smarty->configLoad("db:my.conf")。
参见 {config_load}, $config_overwrite, $default_config_handler_func,getConfigVars(), clearConfig() 和 configLoad()
smarty 从配置文件读取变量的更多相关文章
- Smarty从配置文件读取的变量
从配置文件读取的变量 配置文件中的变量需要通过用两个"#"或者是smarty的保留变量 $smarty.config.来调用(下节将讲到) 第二种语法在变量作为属性值并被引号括住的 ...
- VS2012中,C# 配置文件读取 + C#多个工程共享共有变量 + 整理using语句
(一) C# 配置文件读取 C#工程可以自动生成配置文件,以便整个工程可以使用设置的配置进行后续的处理工作. 1. 首先,右键工程文件-->Properties -->settings-- ...
- 三,Smarty模板技术/引擎——变量操作(2)
1, 变量的分类 ① 从PHP中分配的变量,比如a.php跳转到b.php时候,可以在a.php中分配变量,b.tpl中直接调用.a.php中代码,$smarty->assign(‘str’,’ ...
- smarty中三种变量的访问方式
在模板中smarty有三种变量,第一种,php分配的变量,第二种配置文件里的变量,第三种,PHP全局数组里的变量,配置文件里变量的访问方式可以是{#bgcolor#},"#"必须紧 ...
- C 构造一个 简单配置文件读取库
前言 最近看到这篇文章, json引擎性能对比报告 http://www.oschina.net/news/61942/cpp-json-compare?utm_source=tuicool 感觉技术 ...
- C# 配置文件读取与修改(转)
C# 配置文件读取与修改 配置文件在很多情况下都使用到, 配置文件分为两种 一种是应用程序的配置文件, 一种是web的配置文件. 两种配置文件最大的区别是web的配置文件更新之后会实时更新, 应用 ...
- Smarty中的请求变量和保留变量的使用范例
PHP中提供的超全局数组 Smarty中对应的请求变量 $_GET <{$smarty.get}> $_POST ...
- [spring源码学习]二、IOC源码——配置文件读取
一.环境准备 对于学习源码来讲,拿到一大堆的代码,脑袋里肯定是嗡嗡的,所以从代码实例进行跟踪调试未尝不是一种好的办法,此处,我们准备了一个小例子: package com.zjl; public cl ...
- postman使用之四:切换环境和设置读取变量
postman提供了environment管理功能,想要在多个环境中测试,比如在测试环境.灰度环境.生产环境等,只需要用同样的接口,切换下环境即可,非常方便.具体步骤: 切换环境 1.点击界面右上角的 ...
随机推荐
- SPOJ694 -- DISUBSTR 后缀树组求不相同的子串的个数
DISUBSTR - Distinct Substrings Given a string, we need to find the total number of its distinct su ...
- HDU 5496 - BestCoder Round #58 - Beauty of Sequence
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=637&pid=1002 思路 : 考 ...
- Java CompletableFuture 详解
Future是Java 5添加的类,用来描述一个异步计算的结果.你可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,你也可以使用cancel方法停止任务的执 ...
- 基准测试之netperf
使用 server端 [root@jiangyi01.sqa.zmf /home/ahao.mah/ALIOS_QA/tools/netperf] #netserver -p 10001 Starti ...
- [原创+实战+钓鱼]setoolkit+映射
所需工具:setoolkit,花生壳 (此方法主要针对没有服务器,没有空间的攻击者.有服务器或者空间可以直接上传setoolkit的生成源码到服务器或者空间.) 1.setoolkit克隆一个站点 | ...
- angularJS怎么实现与服务端的PHP进行数据交互
//{params: 要传的参数obj },params这个是关键字不能换别的变量 $http.get(url, {params: {id: categoryid, key: keys} }).suc ...
- Java static块
首先,我们看一个实际例子: class Test{ public static int X=100; public final static int Y=200; public Test(){ Sys ...
- Hibernate简单的基础理论
和Hibernate有关的概念,是掌握Hibernate必须了解的知识.就个人经验来说,可以在了解如何简单开发Hibernate之后,再来学习这些概念,这样可以有个比较清楚的认识.Hibernate是 ...
- 关于SQL中数据类型(float和real)和 .NET Framework 中数据类型(float和double)的问题
今天同学写程序遇到一个问题,MSSQL里的数据是 float 类型,在 .NET Framework 中用的时候也转换成 float 类型,结果报错,类型转换异常,明明是相同的类型,为什么会异常 在w ...
- Linux 数据 CD 刻录
http://www.cyberciti.biz/tips/linux-burning-multi-session-cds-on-linux.html #mkisofs -dvd-video -inp ...