2010-02-11 5 views
32

Je me demandais s'il était possible d'assigner un tableau à une variable dans un fichier modèle Smarty? Je l'ai essayéComment assigner un tableau dans un fichier modèle smarty?

{assign var='file' value = array('dir','doc','exe')} 

Mais quand j'imprimer le tableau, il produit ceci:

array(\'dir\',\'doc\',\'exe\') 

Comment puis-je arrêter Smarty échapper aux valeurs du tableau?

Merci à l'avance

+0

J'ai couru à travers ce problème et est venu avec une solution plus tôt. La solution que je suis venu avec est [ici] (http://stackoverflow.com/questions/11336840/shorten-smarty-if-statements/11337280) – Subash

Répondre

44
{php} 
    $this->assign("array", array('dir','doc','exe')); 
{/php} 

{foreach from=$array item=item} 
    {$item} 
{/foreach} 

De Smarty v.3 nouvelle syntaxe est disponible

{$array = ['item1','item2',$item3]} 

voir pour plus de détails: http://www.smarty.net/docs/en/language.syntax.variables.tpl

+1

Si vous utilisez {php} alors quelle est la signification de l'utilisation de smarty? Vous ne devriez pas utiliser {php} dans un template jusqu'à ce que ce soit la seule option. La solution @Jenski est parfaite –

+1

Assurez-vous de NE PAS mettre une virgule (,) derrière le dernier élément. Je copiais le tableau de php qui causait une erreur de syntaxe. – rambii

42

Je viens de trouver une autre réponse qui permet here vous de le faire sans l'utilisation de {php} tags (recommandé par Smarty)

{assign var='icon' value=','|explode:"dir,doc,exe"} 

encore ouvert à d'autres idées mais ...

+0

cette méthode ne permet pas d'assigner un tableau associatif – Kirzilla

+0

+1 - merci. C'était exactement ce dont nous avions besoin pour résoudre un problème dans notre CMS tiers. –

+0

Pour la version 3 de smarty, voir la réponse de Mituha. – Andy

8

Qu'en est-{$system=['freebsd','windows','macosx','linux']}?

+1

Cela fonctionne dans Smarty v3: http://www.smarty.net/docs/en/language.syntax.variables.tpl – Andy

-1

ce n'est pas la bonne façon d'écrire un code avec le fichier de modèle smarty. vous devriez créer un tableau en PHP, puis obtenir les valeurs de smarty.

This is the right way to create a standard development code. like. 

PHP:

public function arrSam(){ 
    $colors = array(0 => '#1f1f1f', 1 => '#696969', 2 => '#878787', 3 => '#b4b4b4', 4 => '#d2d2d2', 5 => '#f0f0f0', 6 => '#ffffff'); 
    $smarty->assign('colors', $colors); 
} 

Smarty:

{assign var=colors value=$smarty->arrSam()} 
{$colors|print_r} 
+2

Veuillez expliquer pourquoi ce n'est pas correct. –

0
$smarty->assign("lat",$lat); 

{foreach $lat as $latlongval} 
    {assign var="myArray" value=","|explode:$latlongval} 
    {$myArray['0']} 
    {$myArray['1']} 
{/foreach}