Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2010, 09:30
GUILLHERMOSOFT
 
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.