2010-04-08 5 views
1

J'ai une page PHP qui analyse un fichier XML avec SimpleXml, puis passe cet objet à un modèle Smarty. Mon problème est que le fichier XML a des traits d'union dans ses noms de balises, par ex. video-player. En PHP, ce n'est pas un problème, j'utilise simplement $xml->{'video-player'} et tout va bien. Smarty, d'un autre côté, jette une crise quand j'essaie d'utiliser cette syntaxe.Comment accéder aux variables avec des noms de trait d'union dans Smarty?

La seule solution que je suis venu avec jusqu'à présent est d'utiliser une variable pour stocker le nom, par exemple,

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

Mais ce n'est pas très gracieux pour dire le moins. Y a-t-il une autre approche, meilleure, pour faire référence à un nom de variable avec trait d'union dans Smarty?

Répondre

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

logique, mais je me demande s'il y a une façon de le faire sans avoir recours à retomber à PHP ... – abeger

+0

L'autre façon est de changer les délimiteurs de Smarty {et} avec quelque chose de différent, mais ce sera plus facile de faire la chose {php} - http://www.smarty.net/manual/fr/language.escaping.php –

0

Dans Dwoo Je vais essayer avec

{$xml->`video-player`} 

peut-être dans Smarty il fonctionnera aussi.

+0

Pas de dés, malheureusement. – abeger

0

Vous avez juste besoin de le mettre entre guillemets simples.

Il travaille également sur des blocs de comparission comme:

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

au lieu de

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