跳至内容

从配置文件加载数据

除了通过 PHP 将数据分配到模板,还可以使用配置文件。

示例配置文件

配置文件最适合从一个文件中管理模板设置。一个示例是多语言应用程序。可以编写一个模板文件,从配置文件加载语言相关字符串,而无需编写多个模板来支持不同的语言。

示例 lang.en.ini

# global variables
pageTitle = "Main Menu"

[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."""

配置文件变量 的值可以用引号引起来,但不是必需的。可以使用单引号或双引号。如果某个值跨多行,请使用三重引号 (""") 将整个值括起来。可以通过不是有效配置文件语法的任何语法在配置文件中插入注释。我们建议在行首使用 #(哈希)。

上面示例配置文件有两个章节。章节名称用 [方括号] 括起来。章节名称可以是任意不包含 [] 符号的字符串。顶部的变量是全局变量。全局变量总是从配置文件加载。如果加载了特定章节,则还加载全局变量和该章节中的变量。如果一个变量既是全局变量,又存在于章节中,则使用章节变量。

加载配置文件

Config 文件通过内置模板函数 {config_load} 或者通过从 PHP 调用 configLoad() 载入到模板中。

<?php
$smarty->configLoad('lang.en.ini');

使用以下命令载入特定部分:

<?php
$smarty->configLoad('lang.en.ini', 'Customer');

请注意,全局部分始终会载入。

在 PHP 中检索配置变量

从资源加载

Config 文件(或资源)是通过与模板相同的资源工具载入的。这意味着也可以从数据库载入配置文件。请参阅 资源 以了解更多信息。

配置覆盖

如果您在部分中对两个变量命名相同,则将使用最后一个,除非您调用

<?php
$smarty->setConfigOverwrite(false);
当禁用 config 覆盖时,Smarty 会在以相同名称遇到多个条目时创建 config 文件变量的数组。

另请参阅 {config_load}$default_config_handler_funcgetConfigVars()clearConfig()configLoad()