Foros del Web » Programando para Internet » PHP »

Valor de variables en tpl con smarty

Estas en el tema de Valor de variables en tpl con smarty en el foro de PHP en Foros del Web. Hola a todos, Estoy trabajando con Smarty y tengo problemas para leer variables de un template a otro. Me explico. Tengo una plantilla .html y ...
  #1 (permalink)  
Antiguo 29/04/2009, 11:38
Avatar de SUSMO  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Valor de variables en tpl con smarty

Hola a todos,

Estoy trabajando con Smarty y tengo problemas para leer variables de un template a otro. Me explico. Tengo una plantilla .html y dentro de esta hago dos includes de dos archivos diferentes .tpl
En el primer archivo tpl creo variables que necesito que se puedan leer des del segundo archivo tpl pero no se hacerlo.

Pongo el código para que se entienda mejor.

Código del template
Código PHP:
{include file="modules/users/codeAjaxIni.tpl"}

<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" >
<
head>
{
base}
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

{
$hola} {* Aquí ya no tiene valor *}
{include 
file="modules/users/codeAjaxJs.tpl" ajax=$ajax }

</
head>

<
body>
.... 
Código de codeAjaxIni.tpl
Código PHP:
{php}
       
$this->assign("hola","hola");
{/
php
Código de codeAjaxJs.tpl
Código PHP:
{php}

echo 
"-->>> ".$this->_tpl_vars['hola'];

{/
php}
{
$hola
El código que he puesto es mucho más sencillo de lo que es en realidad pero ni aún así me funciona.
Tengo que ponerlo en dos tpl diferentes pq el primero me ha de crear en php un ojbeto ajax antes de cargarse el documento para que no de errores y el segundo contendrá las funciones javascripts y el código para ejecutar las funciones de ajax creado en el primer tpl.

Resumiendo, en el caso que os he puesto, creo la variable $hola para smarty pero ya en la plantilla no la reconoce y en el segundo tpl mucho menos y no se como hacerlo. He provado de poner el código directamente en la plantilla sin estar en tpls aparte y si me funciona pero claro, queda muyyy feo y prefiero separarlo. ¿Como puedo leer o simplemente pasar el valor de la variable de un tpl a otro?

Espero haberme explicado bien jeje
Gracias de antemano
__________________
Perdida en el mundo del conocimiento
  #2 (permalink)  
Antiguo 29/04/2009, 12:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 131
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Valor de variables en tpl con smarty

El uso de {php} y {/php} esta mal visto entre los que utilizamos smarty y nunca nunca deberia ser usado. Una buena practica es generar todo el script desde un php y luego llamar

$smary->display('template.tpl');

Tanto en el template.tpl como en cualquier tpl que incluyas desde el mismo, las variables creadas en el php podran ser usadas sin problema.



Basicamente mi respuesta lo que dice es que te estas complicando la vida... la idea de smarty justamente es separar la programacion del diseño. Incluir codigo PHP dentro del diseño va completamente en contra de la filosofia de smarty.

Saludos
Bruno
  #3 (permalink)  
Antiguo 30/04/2009, 03:57
Avatar de SUSMO  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Respuesta: Valor de variables en tpl con smarty

Hola Hildegaard,

Muchas gracias por tu respuesta, pero porque está mal visto utilizar {php}{/php}? para algo existe no? yo lo utilizo cuando las funcionalidades de smarty no me permiten o no se como hacer según que cosas ya que no soy muy experta en el tema y no pensaba que el uso de estos tags etuviera mal.

De hecho de la manera que lo he hecho, queda perfectamente separada la programación del diseño, ya que como he comentado el código php y sólo php lo he puesto en archivos a parte y luego los incluyo en la plantilla que contiene el código html.

No acabo de entender la manera que me propones para solucionar mi problema. En la plantilla html hacer un include de un archivo php que me ejecute el código y en este código hacer un display del template con smarty? en ese caso, no es rizar el rizo cuando con un include que me ejecute el mismo código en la plantilla ya lo tengo solventado? Además, el primer include sólo lo hago para inicializar variables, un objeto de ajax que es el que quiero pasar al segundo tpl para printar por pantalla el javascript.

De todas formas, me podrias ayudar con mi duda inicial, es decir, de la manera que lo he hecho, como leería el valor de las variables entre los diferentes templates? y de la manera que me propones?

Muchas gracias de nuevo
__________________
Perdida en el mundo del conocimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:11.