是否可以在smarty中的配置文件中定义数组?例如,我想在配置文件(位于/ configs)中有小数据库 - 很少(约20个)产品描述:标题,价格,描述。之后我想通过foreach或section列出它。 如何在没有MySql或其他数据库引擎的情况下在Smarty中定义该数组。我能这样做吗?
答案 0 :(得分:6)
您可以在配置文件中定义数组,您需要设置$ config_overwrite = FALSE。 你可以看看这个页面:config_overwrite
$smarty = new Smarty;
$smarty->config_overwrite=false;
配置文件。
# row colors
rowColors = #FF0000
rowColors = #00FF00
rowColors = #0000FF
带有{section}循环的模板。
<table>
{section name=r loop=$rows}
<tr bgcolor="{cycle values=#rowColors#}">
<td> ....etc.... </td>
</tr>
{/section}
</table>
答案 1 :(得分:1)
聪明的论坛上有人找到了办法。参见:
答案 2 :(得分:0)
我看了一下Smarty文档,特别是this页面。
我没有看到在这里初始化数组的示例,我怀疑Smarty不支持在其配置文件中初始化数组,因为配置文件似乎是简单的键值存储。您当然可以尝试在配置文件中初始化一个数组,并告诉我们它是否适合您。
在其他Smarty文档页面上,初始化数组的首选位置在.php页面中,该页面用于初始化值并在显示之前将它们加载到模板中。
答案 3 :(得分:0)
再次,因为形成:
似乎是真的。那里没有定义数组的可能性。我尝试了所有的东西......最后我使用了来自控制器的assign数组(正如你的建议):
php:
$smarty->assign('list', array(1,2,3,4));
product.conf
[1]
client=
url=
price=
description=
[2]
client=
url=
price=
description=
[3]
client=
url=
price=
description=
[4]
client=
url=
price=
description=
tpl:
{foreach from=$list item=current name=prod}
{config_load file='product.conf' section=$current}
{$smarty.config.client}
{$smarty.config.url}
{$smarty.config.price}
{$smarty.config.description}
{/foreach}
答案 4 :(得分:0)
有什么理由要求聪明地完成这项工作吗?如果您只是在PHP中创建数组并传递给smarty变量,那么它似乎更具有前瞻性。这样一来,如果您不再使用smarty,那么所有数据仍可通过任何重新编码进行访问。