Php 如何在Smarty中访问带有连字符名称的变量?
我有一个PHP页面,它使用SimpleXml解析XML文件,然后将该对象传递给Smarty模板。我的问题是XML文件的标记名中有连字符,例如Php 如何在Smarty中访问带有连字符名称的变量?,php,simplexml,smarty,variable-names,Php,Simplexml,Smarty,Variable Names,我有一个PHP页面,它使用SimpleXml解析XML文件,然后将该对象传递给Smarty模板。我的问题是XML文件的标记名中有连字符,例如视频播放器。在PHP中,这没有问题,我只使用$xml->{'video-player'},一切都很好。另一方面,当我尝试使用这种语法时,Smarty会大发雷霆 到目前为止,我提出的唯一解决方案是使用变量来存储名称,例如 { assign var=name value="video-player" } { $xml->$name } 但至少可以说,这并
视频播放器
。在PHP中,这没有问题,我只使用$xml->{'video-player'}
,一切都很好。另一方面,当我尝试使用这种语法时,Smarty会大发雷霆
到目前为止,我提出的唯一解决方案是使用变量来存储名称,例如
{ assign var=name value="video-player" }
{ $xml->$name }
但至少可以说,这并不十分优雅。在Smarty中引用连字符变量名是否还有另一种更好的方法?在
Dwoo
中,我将尝试使用
{php}
echo $xml->{'video-player'};
{/php}
{$xml->`video-player`}
也许在
Smarty
中它也会起作用。你只需要把它放在单引号中
它也适用于比较块,如:
{if $variable == 'hyphenated-value'} it works! {/if}
而不是
{if $variable == hyphenated-value} do not work! {/if}
这是有道理的,但我想知道是否有一种方法可以不用求助于PHP来实现它……另一种方法是用不同的东西来更改Smarty分隔符{and},但是只做{PHP}会更容易-