() RESUELVE incluir dentro de incluir variables desapareciendo

  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Julio 21st, 2010, 5:49 am

Entonces aqui esta pasando, tengo un archivo (index.php), que es sólo una página que yo uso para la inclusión de la plantilla para mi costumbre CMS. Este archivo index.php construye todas las variables para el archivo de plantilla ($ título, contenido, $ mí (usuario registrado), etc.) Al final de este archivo incluyo a mi plantilla (/ templates / tema / index.php), y esto funciona muy bien y tira en todas las variables indicadas en index.php. Dentro del archivo de plantilla que incluir el módulo de entrada (/ modules / usuario / tema / login.php).

Algunos fragmentos de código:

index.php
PHP Código: [ Select ]
...
  //if the user is logged in, create the user object
  if(isset($_SESSION["login"]) && $_SESSION["login"] != ""){
    $me = new User($_SESSION["login"]);
  }
  else{
    $me = false;
  }
...
  $template_file = "templates/" . WEBSITE_THEME . "/" . (($mobile_browser == true) ? "mobile.php" : "index.php");
  if(file_exists($template_file)){
    require_once($template_file);
  }
  1. ...
  2.   //if the user is logged in, create the user object
  3.   if(isset($_SESSION["login"]) && $_SESSION["login"] != ""){
  4.     $me = new User($_SESSION["login"]);
  5.   }
  6.   else{
  7.     $me = false;
  8.   }
  9. ...
  10.   $template_file = "templates/" . WEBSITE_THEME . "/" . (($mobile_browser == true) ? "mobile.php" : "index.php");
  11.   if(file_exists($template_file)){
  12.     require_once($template_file);
  13.   }


/ Templates / index.php tema /
PHP Código: [ Select ]
<div class='login'>
 <?php Module_Helper::load_module("user","login"); ?>
</div>
  1. <div class='login'>
  2.  <?php Module_Helper::load_module("user","login"); ?>
  3. </div>


/ Modules / usuario / tema / login.php
PHP Código: [ Select ]
<?php if($me == false): ?>
 ...
<?php else: ?>
 ...
<?php endif; ?>
  1. <?php if($me == false): ?>
  2.  ...
  3. <?php else: ?>
  4.  ...
  5. <?php endif; ?>


ahora el problema es, $ mí es siempre falsa en los módulos de / / usuario / tema / página login.php, a pesar de que es un objeto en las plantillas / / tema / página index.php, que sólo incluye la página de login.php . ¿Puede alguien decirme qué está sucediendo aquí...?
Let's leave all our *plum* where it is and go live in the jungle ...
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Julio 21st, 2010, 5:49 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 21st, 2010, 6:34 am

Im teniendo un disparo en la oscuridad aquí, pero mi conjetura es que usted está usando eval o algo dentro de su Module_Helper:: Método load_module y la variable $ me no está disponible en ese contexto. Tal vez me $ no está disponible en load_modules contexto.

¿Qué sucede si se utiliza "global $ me" dentro load_module?
Strong with this one, the sudo is.
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Julio 21st, 2010, 6:39 am

Heres la función, no pasa nada con los $ variable dentro de este me.
PHP Código: [ Select ]
public static function load_module($module,$action,$module_url = null){
  if(file_exists("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php")){
    include("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php");
  }
  else{
    include("modules/{$module}/default/{$action}.php");
  }
}
  1. public static function load_module($module,$action,$module_url = null){
  2.   if(file_exists("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php")){
  3.     include("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php");
  4.   }
  5.   else{
  6.     include("modules/{$module}/default/{$action}.php");
  7.   }
  8. }
Let's leave all our *plum* where it is and go live in the jungle ...
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 21st, 2010, 6:45 am

¿Qué ocurre si usted hace esto?

PHP Código: [ Select ]
public static function load_module($module,$action,$module_url = null){
  global $me;
  if(file_exists("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php")){
    include("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php");
  }
  else{
    include("modules/{$module}/default/{$action}.php");
  }
}
  1. public static function load_module($module,$action,$module_url = null){
  2.   global $me;
  3.   if(file_exists("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php")){
  4.     include("modules/{$module}/" . WEBSITE_THEME . "/{$action}.php");
  5.   }
  6.   else{
  7.     include("modules/{$module}/default/{$action}.php");
  8.   }
  9. }
Strong with this one, the sudo is.
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Julio 21st, 2010, 6:50 am

funciona como un encanto...¿Por qué ocurre entonces? si se incluye un archivo no debe también leer las variables de los autos que está incluida...?
Let's leave all our *plum* where it is and go live in the jungle ...
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Julio 21st, 2010, 7:13 am

Todavía eres en el contexto de esa función cuando hace lo incluyen sin embargo. son inherentemente no utilizar el contexto global, se utiliza el contexto de ejecución actual. :)
Strong with this one, the sudo is.
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Julio 21st, 2010, 7:20 am

oh bien, señaló, cosas interesantes, gracias.
Let's leave all our *plum* where it is and go live in the jungle ...

Publicar Información

  • Total de mensajes en este tema: 7 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 157 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC