2012-01-27 15 views
5

Tengo un archivo php que tiene algunas variables locales y globales (por ejemplo, $ foo)
Se llama a un objeto smarty desde este archivo.
¿Cómo puedo acceder a $ foo desde el script de smarty sin cambiar el archivo PHP?Acceder a una variable (local o global) del archivo PHP de smarty

Gracias

+1

Debe asignar la variable al objeto Smarty o Smarty no podrá acceder a ella. No hay una varita mágica para evitar esto. – rdlowrey

Respuesta

4

No puede. Tienes que asignarlo a smarty dentro del archivo PHP.

$smarty->assign('foo', $foo); 
8

Si tiene una variable constante llamada base y define así:

define('BASE', 'Boise'); 

se puede acceder a la variable en sabelotodo de la siguiente manera:

$smarty.const.BASE 
5

Usted solía ser capaz de evitar esto usando etiquetas {php}{/php}, pero como esto está obsoleto, ahora tiene que asignar sus variables a través de $smarty->assign(), la única excepción a esto son las constantes y el servidor variable es a la que todavía tiene acceso directo a través del objeto $smarty.

(También puede volver a habilitar las etiquetas {php} si desea y no le preocupan las posibles razones de seguridad para las que estaban deshabilitadas).

Cualquiera de las variables de petición como $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV y $_SESSION están disponibles a través del objeto $smarty.

Debido a esto, la mayoría de los datos con los que trabajo simplemente se puede acceder a través del objeto $smarty sin tener que crear una tonelada de variables (copiadas).

ej .:

  • Acceso a una constante: {$smarty.const.MY_CONST_VAL}
  • Acceso a un $ _SERVER var: // {$smarty.server.REQUEST_METHOD}Everything in $_SERVER es accesible
  • Agarrando algo de $ _SESSION: // {$smarty.session.MY_SESSION_VAL}Everything in $_SESSION está disponible
Cuestiones relacionadas