Smarty - 从配置文件加载多个部分

时间:2014-04-29 12:39:51

标签: variables configuration smarty smarty3

我是Smarty的新手,现在正在玩它并看看它能做些什么。我偶然发现了这种情况,并没有在文档中找到任何参考: 如果我在test.conf文件中有多个部分,

sitename = "Testing Smarty"
[basic]
apply = true
denied = false
[images]
width = 60px
height = 80px
[anythingelse]
foo = "Yes"
bar = "No"

如何一次性包含所有这些部分?

如果我把:

{config_load file="test.conf"}

Smarty将仅返回变量,这些变量不属于任何部分。因此{$ smarty.config.sitename}或#sitename#将起作用,但不会加载任何其他变量。

如果我把:

{config_load file="test.conf" section="basic"}

Smarty将返回变量,这些变量不在任何部分中,并将所有变量添加到" basic"部分。

是否可以一次添加所有部分?或者我必须致电

{config_load file="test.conf" section="some_section"} 

对于我在配置文件中的每个部分?

1 个答案:

答案 0 :(得分:1)

根据文件,这是不可能的。没有信息可以加载多个配置部分。但是,如果您可以加载配置文件而不是模板本身,而是加载PHP,就像文档http://www.smarty.net/docs/en/api.config.load.tpl一样,您可以创建部分数组,然后在循环加载部分中创建所需的部分,这样您就可以实现所需:

$sections = array('section1', 'section2', 'section10');

foreach ($sections as $section) {
    $smarty->configLoad('filename.conf', $section);

}

它应该可以工作,但我还没有测试过(从来没有需要这样的功能,目前还没有任何聪明的项目可以测试)