数据变量的Smarty echo在其名称中带有“ - ”

时间:2010-02-16 08:49:30

标签: php smarty

我有变量,在PHP控制器中看起来像

$data['content']['mods']['HTML-FORM-END']['html']

它在smarty中很好地传递,但当我尝试以任何这些方式显示它时,它显示0(假设减去运算符并进行数学运算),或者说“无法识别的标记”

{$data.content.mods.HTML-FORM-BEGIN.html}
{$data.content.mods['HTML-FORM-BEGIN']['html']}
{$data.content.mods.HTML-FORM-BEGIN.html}
{$data.content.mods.HTML-FORM-BEGIN.html}

如何在不重命名控制器中的数组键的情况下打印它?

1 个答案:

答案 0 :(得分:1)

您的示例在控制器中引用了“HTML-FORM-END”,但在视图中引用了“HTML-FORM-BEGIN”,但我认为这不是您的问题,而且两者都存在。怎么样?

{$data[content][mods][HTML-FORM-BEGIN][html]}

从我可以发现,似乎在Smarty中进入多维数组的唯一方法是使用循环。也许您可以将阵列拆分为控制器中的分配以便于访问:

foreach($data['content']['mods'] as $key => $values) {
  $smarty->assign('content_mods_' . $key, $values['html'];
}

然后您可以在模板中引用它们,如下所示:

{$content_mods_HTML-FORM-BEGIN}
{$content_mods_HTML-FORM-END}
// etc.