2010-12-03 29 views
1

Je sais que nous devrions éviter la balise {php} à l'intérieur d'un moteur de gabarit, supposons que c'est la seule façon de procéder dans ce cas. Compte tenu de cela, je voudrais demander de l'aide afin de saisir smarty string pour la consommation de php.code smarty - accès aux variables à l'intérieur de {php} tag

Dans ce cas, je voudrais accéder à $ result.domain à l'intérieur de la fonction srtstr php.

Qu'est-ce que je fais mal?

{foreach key=period item=regoption from=$result.regoptions} 
{if $regoption.$domain} 
{if $domain eq "transfer"} 
{php} 
    $domainName = $result.domain; 
    $tld = strstr($domainName, '.'); 
{/php} 

{if $tld eq '.gt'} 
    <p>Something</p> 
{else} 
<option value="{$period}">{$period} {$LANG.orderyears} @ {$regoption.$domain}</option> 
{/if} 
{/if} 
{/if} 
{/foreach} 

Merci à l'avance,
MEM

+0

Des regards de celui-ci, ce que vous essayez de faire peut être accompli sans le '{php} 'block, simplement en faisant une boucle sur' $ results.regoptions' et en remplaçant la chaîne avant de passer à '$ smarty-> display()'. – eykanal

Répondre

4

Vous pouvez utiliser get_template_vars, assurez-vous d'utiliser $this au lieu de $smarty

$this->get_template_vars('foo') 

Ce serait une bien meilleure idée de réécrire ce que vous êtes faire comme smarty plugin though

EDIT:

Dans votre exemple, vous pourriez faire quelque chose comme

$result = $this->get_template_vars('result'); 
$domainName = $result.domain; 
+0

et ce qui serait foo sur cette affaire? Je veux dire, j'ai essayé: "$ result.domain" et "result.domain" - pas de chance. – MEM

+0

Ne serait-ce pas '$ this-> getTemplateVars (...)'? [smarty docs] (http://www.smarty.net/docs/en/api.get.template.vars.tpl) – Lee

0

Ne pas les balises {} PHP référence Les variables PHP, et non variables définies par $smarty->assign?

Peut-être que vous essayez d'accéder à quelque chose dans un {PHP} que vous avez défini à travers $smarty->assign?

Essayez d'accéder à l'objet tel qu'il est nommé dans votre fichier .php qui appelle $smarty->dispay().

0

$this ne fonctionne pas pour nous, comme ça nous avons finalement obtenu à l'aide de variables $GLOBALS:

$variable= $GLOBALS['smarty']->getTemplateVars('variable');