Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP + Smarty - Pasar variables a JavaScript?

Estas en el tema de PHP + Smarty - Pasar variables a JavaScript? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Que tal amigos?? Estamos trabajando en un proyecto PHP + Smarty + MySQL + JavaScript, y tenemos una pequeña duda. ¿De qué manera puedo utilizar ...
  #1 (permalink)  
Antiguo 10/07/2014, 18:03
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 3 meses
Puntos: 0
PHP + Smarty - Pasar variables a JavaScript?

Que tal amigos??

Estamos trabajando en un proyecto PHP + Smarty + MySQL + JavaScript, y tenemos una pequeña duda.
¿De qué manera puedo utilizar en mis archivos .js las variables de Smarty?
Actualmente hacemos esto....

PHP:
Código:
...
...
$smarty->assign(array(
	'actual_page' => 'login',
	'root' => _ROOT_URL_
));
$smarty->display(_TEMPLATES_DIR_.'login.tpl');
Smarty:
Código:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
	<head>
		<title>{$ttitle}</title>
		<script type="text/javascript">
			var root = {$root};
		</script>
		<script type="text/javascript" src="{$root}js/tools.js"></script>
	</head>
...
...
De esta manera yo puedo usar la variable "root" dentro del archivo tools.js, pero...
Por ejemplo, hay una variable llamada TRANS que contiene todas las traducciones de los textos de la página en el idioma seleccionado por el usuario... son cientos de definiciones, que yo los cargo a Smarty para su uso, pero que si las quiero usar dentro de tools.js, las tengo que declarar en el HEAD y quedan visibles dentro del código de mi página.

¿Hay manera de usar estas variables de Smarty dentro del .js cargado sin tener que redeclarar las variables de nuevo?

Saludos y gracias por adelantado.
Silver
  #2 (permalink)  
Antiguo 11/07/2014, 08:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 8 meses
Puntos: 379
Respuesta: PHP + Smarty - Pasar variables a JavaScript?

Puedes usar un objeto json que solo contenga las traducciones necesarias. El json se puede crear desde php fácilmente: http://php.net/manual/en/book.json.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 11/07/2014, 13:44
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: PHP + Smarty - Pasar variables a JavaScript?

Hola, gracias por la respuesta... lo que dices es lo que hago actualmente y funciona bien, pero a lo que me refiero es a una duplicidad de declaraciones que estoy teniendo y no sé si se puede evitar... te pongo un ejemplo.

Supongamos que en $token tengo un arreglo con todos los tokens para las diferentes acciones... estos tokens se generarían de manera dinámica, pero para este ejemplo los pondré fijos.

En php:
Código:
$tokens = array(
	array('action'=>'viewFile', 'token' => 'gsdf67ghfdsgf7'),
	array('action'=>'editFile', 'token' => '7sdjueghfdsoke')
);

$smarty->assign(array(
	'tokens' => $tokens,  // para usar en en el archivo .tpl
	'tokens_js' =>  json_encode($tokens) // para usar en el archivo .js
));
En el archivo .tpl:
Código:
<head>
	<title>{$ttitle}</title>
	<script type="text/javascript">
		var tokens = {$tokens_js};
	</script>
	<script type="text/javascript" src="js/tools.js"></script>
</head>
A lo que me refiero es a que tuve que declarar dos veces la misma variable, para usarla en smarty y para usarla en javascript.
Lo que yo hubiera esperado es que yo pudiera usar dentro del .js importado las etiquetas de smarty {$tokens[0]['action']}, igual que hago en el .tpl.

No sé si me esté dando a entender...
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #4 (permalink)  
Antiguo 11/07/2014, 14:06
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 8 meses
Puntos: 379
Respuesta: PHP + Smarty - Pasar variables a JavaScript?

Puedes recorrer en un ciclo el arreglo e ir creando de forma dinámica el json o haciendo la asignación mediante var = etc..
La otra opción es que mediante DOM accedas al token y de esa forma no dupliques el arreglo.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 11/07/2014, 14:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: PHP + Smarty - Pasar variables a JavaScript?

Otra opción es que generes el .js desde el servidor igual usando Smarty y así el JS va a ser dinámico también.
  #6 (permalink)  
Antiguo 11/07/2014, 21:12
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: PHP + Smarty - Pasar variables a JavaScript?

Gracias amigos, lo intentaré a ver que tal... les agradezco su tiempo.
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx

Etiquetas: mysql, php, 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 05:18.