2010-02-11 5 views
32

Me preguntaba si era posible asignar una matriz a una variable dentro de un archivo de plantilla Smarty? He intentado esto¿Cómo asignar una matriz dentro de un archivo de plantilla inteligente?

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

Pero cuando imprimo la matriz se produce esto:

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

¿Cómo puedo dejar escapar Smarty los valores de la matriz?

Gracias de antemano

+0

he corrió a través de este problema y se le ocurrió una solución antes. La solución que se me ocurrió es [aquí] (http://stackoverflow.com/questions/11336840/shorten-smarty-if-statements/11337280) – Subash

Respuesta

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

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

De Smarty versión 3 nueva sintaxis es disponible

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

ver para más detalles: http://www.smarty.net/docs/en/language.syntax.variables.tpl

+1

Si usa {php}, entonces, ¿qué significa el uso de smarty? No debe usar {php} dentro de la plantilla hasta que sea la única opción. La solución de @Jenski es perfecta –

+1

Asegúrese de NO poner una coma (,) detrás del último elemento. Estaba copiando la matriz de php que causaba un error de sintaxis. – rambii

42

acabo de encontrar otra respuesta que permite here usted puede hacer esto sin el uso de {php} tags (recomendado por Smarty)

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

sigue abierta a más ideas aunque ...

+0

este método no permite asignar matriz asociativa – Kirzilla

+0

+1 - gracias. Esto era exactamente lo que necesitábamos para abordar un problema en nuestro hacky CMS de terceros. –

+0

Para la versión 3 de smarty, vea la respuesta de Mituha. – Andy

8

¿qué pasa con {$system=['freebsd','windows','macosx','linux']}?

+1

Esto funciona en Smarty v3: http://www.smarty.net/docs/en/language.syntax.variables.tpl – Andy

-1

no es la forma correcta de escribir un código en el archivo de plantilla smarty. deberías crear una matriz en php y luego obtener los valores 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

Explique por qué no es correcto. –

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

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