Foros del Web » Programando para Internet » PHP »

Pasar variable de smarty a php sin recargar página

Estas en el tema de Pasar variable de smarty a php sin recargar página en el foro de PHP en Foros del Web. Buen día, actualmente tengo el nombre de un archivo el cual se me es dado por medio de una variable smarty, necesito buscar la palabra ...
  #1 (permalink)  
Antiguo 12/08/2010, 09:30
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 1 mes
Puntos: 2
De acuerdo Pasar variable de smarty a php sin recargar página

Buen día, actualmente tengo el nombre de un archivo el cual se me es dado por medio de una variable smarty, necesito buscar la palabra ".swf" en el nombre del archivo, para saber si es una animación de flash ó una imagen y de acuerdo a esto llamar las respectivas etiquetas para su visualización (ver código)

if(strpos($row['image'], ".swf")===false)
{//Sino contiene la palabra ".swf", llama el archivo como si fuera imagen
$smarty->assign('image',
"<img alt=\"{$row['name']}\" src=\"../uploads/{$row['image']}\">{$row['description']}</img>");
}
else
{//Si contiene la palabra ".swf", llama el archivo como si fuera una animación Flash
$smarty->assign('image',
"<embed src=\"../uploads/{$row['image']}\" ></embed>");
}

en PHP mi código funciona a la perfección en determinada interfaz de la aplicación, pero en otra el archivo se llama por medio de plantillas de smarty y otras funcionalidades (aclaro: la aplicación no la cree yo, sino que simplemente le estoy agregando determinada funcionalidad), la variable de smarty es la siguiente:

{$banner.image}

la cual al momento de pasarla a un campo de texto se visualiza sin problema (ver código)

<input type="text" name=test value="{$banner.image}"> y me imprime el valor en el input, más no puedo recargar la página y enviar la variable por POST ó GET, ya que de hacerlo hay un alto riesgo de que esto perjudique otras áreas y/ó funcionalidades de la página.

Más al momento de intentar "leer" esta variable desde PHP (ver código)

{php} //////>Inicio código PHP diciendo que imprima
echo
{/php} //////>Cierro código PHP para dar "paso" a la variable en smarty
{$banner.image}
{php}
;
{/php}

Pero se me imprime este error:

Parse error: parse error in Z:\wamp\www\praxair\lib\smarty\Smarty.class.php(19 54) : eval()'d code on line 13

He visto en algunas webs que recomiendan hacerlo así:

{assign var="foo" value=$banner.image}

{php}
echo $smarty->get_template_vars($foo);
{/php}

ó

{assign var="foo" value=$banner.image}

{php}
echo $smarty->get_template_vars('foo');
{/php}

Pero se me imprime este error:

Fatal error: Call to a member function get_template_vars() on a non-object in Z:\wamp\www\praxair\lib\smarty\Smarty.class.php(19 54) : eval()'d code on line 12

Así mismo intenté haciendolo así:

{assign var="foo" value=$banner.image}

{php}
echo $smarty->_tpl_vars[$foo];
{/php}

Pero esta vez no se me imprima nada, ni errores ni mi variable.

Por lo cual les pido que por favor si me pueden ayudar en esto les agradecería mucho, ya que esto me tiene un poco bloqueado y ya le he invertido mucho tiempo, para poder avanzar en mi proyecto.

Ó si alguien sabe de alguna manera de una función y/ó manera de hacer lo que hice en mi código de PHP con smarty, en especial la parte en que llamo la función "strpos" (la cual solo encuentra la posición de la primera aparición de una cadena) y genero las condiciones, de esta manera no tendría que pasar la variable a PHP, sino que lo podría hacer todo desde Smarty.

Estaré atento a sus comentarios.

Muchas gracias.
  #2 (permalink)  
Antiguo 12/08/2010, 12:51
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
Respuesta: Pasar variable de smarty a php sin recargar página

en las otras secciones donde te lo pasa por smarty deberias buscar el php que te lo devuelve y ahi hacer la validacion como lo indicas al principio del post.

Etiquetas: pasar, recargar, smarty, variables
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 17:18.