我在PHP中有一个如下所示的数组:
$config['detailpage.var1']
$config['detailpage.var2']
$config['otherpage.var2']
$config['otherpage.var2']
...
Run Code Online (Sandbox Code Playgroud)
要在Smarty中访问它,我会这样做
$smarty->assign('config', $config);
Run Code Online (Sandbox Code Playgroud)
使用此模板:
{$config.detailpage.var1}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为我的数组键"detailpage.var1"中的点,Smarty是数组元素的分隔符.因为我不想重写我的配置数组(因为它在许多其他地方使用),我的问题是:
有没有其他符号我可以使用与数组键中的点一起使用?或者我可以以某种方式逃脱它们?
不是最聪明的解决方案,但它应该工作:
{assign var=myKey value="detailpage.var1"}
{$config.$myKey}
Run Code Online (Sandbox Code Playgroud)
在我在这里寻找答案后,我“意外地”找到了这个问题的答案。在本例中,我使用主机名作为始终带有点的键。您可以使用带点键名称的 {} 来访问它们。例如{$var.foo.bar.{"my.hostname.example.com"}.ipaddress}。
当您必须扩展包含点的变量时,也可以使用这种“转义”语法。例如{$var.foo.bar.{$var.bingo}}