如何在Smarty中使用带连字符的名称访问变量?

时间:2010-04-08 17:11:10

标签: php simplexml smarty variable-names

我有一个PHP页面用SimpleXml解析XML文件,然后将该对象传递给Smarty模板。我的问题是XML文件的标签名称中有连字符,例如: video-player。在PHP中,这没问题,我只使用$xml->{'video-player'},一切都很好。另一方面,当我尝试使用该语法时,Smarty会抛出一个拟合。

到目前为止,我提出的唯一解决方案是使用变量来存储名称,例如

{ assign var=name value="video-player" }
{ $xml->$name }

但至少可以说这不是非常优雅。是否有另一种更好的方法来引用Smarty中带连字符的变量名称?

3 个答案:

答案 0 :(得分:3)

{php}
    echo $xml->{'video-player'};
{/php}

答案 1 :(得分:0)

Dwoo我会尝试

{$xml->`video-player`}

也许在Smarty它也会起作用。

答案 2 :(得分:0)

你只需要把它放在单引号内。

它也适用于比较块:

{if $variable == 'hyphenated-value'} it works! {/if}

而不是

{if $variable == hyphenated-value} do not work! {/if}