Capítulo 4. Variables

Tabla de contenidos
Variables definidas desde PHP
Variables cargadas desde archivos de configuración
La variable reservada {$smarty}

Smarty tiene varios tipos diferentes de variables. El tipo de variable depende de cual simbolo este prefijado(incluido dentro).

Las variables de Smarty no pueden ser mostradas directamente o usadas como argumentos para atributos, funciones y modificadores, dentro de expresiones condicionales, etc. Para mostrar una variable, simplesmente coloque esta entre delimitadores siendo esta la única cosa entre ellos. Ejemplos:
{$Name}

{$Contacts[row].Phone}

<body bgcolor="{#bgcolor#}">

Variables definidas desde PHP

Las variables que son asignadas desde PHP son referenciadas precedidas estas con una señal de cifrado $. Las variables definidas dentro del template como una función assign también son mostradas de esta manera.

Ejemplo 4-1. variables definidas

php script

<?php

$smarty 
= new Smarty;

$smarty->assign('firstname''Doug');
$smarty->assign('lastname''Evans');
$smarty->assign('meetingPlace''New York');

$smarty->display('index.tpl');

?>

Donde el contenido de index.tpl es:

Hello {$firstname} {$lastname}, glad to see you can make it.
<br />
{* this will not work as $vars are case sensitive *}
This weeks meeting is in {$meetingplace}.
{* this will work *}
This weeks meeting is in {$meetingPlace}.

esta es la salida:

Hello Doug Evans, glad to see you can make it.
<br />
This weeks meeting is in .
This weeks meeting is in New York.

Arreglos asociativos

Usted también puede referenciar matrices asociativas en variables que son definidas desde PHP especificando la clave después del simbolo '.'(punto).

Ejemplo 4-2. Accesando variables de matriz asociativa

<?php
$smarty
->assign('Contacts',
    array(
'fax' => '555-222-9876',
          
'email' => 'zaphod@slartibartfast.com',
          
'phone' => array('home' => '555-444-3333',
                           
'cell' => '555-111-1234')
                           )
         );
$smarty->display('index.tpl');
?>

Donde el contenido de index.tpl es:

{$Contacts.fax}<br />
{$Contacts.email}<br />
{* you can print arrays of arrays as well *}
{$Contacts.phone.home}<br />
{$Contacts.phone.cell}<br />

esta es la salida:

555-222-9876<br />
zaphod@slartibartfast.com<br />
555-444-3333<br />
555-111-1234<br />

Índices de Matrices

Usted podra referencia matrizes por su índice, muy semejantes a la sintaxis de PHP.

Ejemplo 4-3. Accesando matrices por sus índices

<?php
$smarty
->assign('Contacts', array(
                           
'555-222-9876',
                           
'zaphod@slartibartfast.com',
                            array(
'555-444-3333',
                                  
'555-111-1234')
                            ));
$smarty->display('index.tpl');
?>

Donde index.tpl es:

{$Contacts[0]}<br />
{$Contacts[1]}<br />
{* you can print arrays of arrays as well *}
{$Contacts[2][0]}<br />
{$Contacts[2][1]}<br />

esta es la salida:

555-222-9876<br />
zaphod@slartibartfast.com<br />
555-444-3333<br />
555-111-1234<br />

Objects

Las propiedades de los objetos definidos desde PHP pueden ser referenciados especificando el nombre de la propiedad después del simbolo '->'.

Ejemplo 4-4. Accesando propiedades de los Objetos

name: {$person->name}<br />
email: {$person->email}<br />

esta es la salida:

name: Zaphod Beeblebrox<br />
email: zaphod@slartibartfast.com<br />