Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/07/2010, 22:19
Avatar de destor77
destor77
 
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: Ayuda a la clase de vista MVC

yo a mi clase vista la tengo así (no es la mejor forma, pero a mi me funciona y eso me alcanza por el momento jaja)
Código PHP:
Ver original
  1. <?php
  2. /**
  3. * @package Punk Framework
  4. * @copyright Copyright (C) 2009 On&iacute;rico Sistemas. Todos los derechos reservados.
  5. * @version 0.1
  6. * @author Lucas M. Sastre
  7. * @link http://www.oniricosistemas.com
  8. *
  9. * @name Vistas.php
  10. */
  11.  
  12. /**
  13.  * Modificaciones realizadas
  14.  *
  15.  * 28/02/2010
  16.  * - se agrego el codigo para llamar a otras clases y asignarlas para ser usadas
  17.  * en las vistas.
  18.  *
  19.  * 17/04/2010
  20.  * - se modifico la clase para que se use una estructura de template, donde en las vistas de cada controlador solo se carga el contenido del html a mostrar y en la carpeta
  21.  * template en el archivo index.html se imprima el contenido de cada vista.
  22.  *
  23.  */
  24. class Vistas
  25. {
  26.  
  27.  
  28.     function __construct()
  29.     {
  30.     }
  31.  
  32.     public function show($name, $vars = array())
  33.     {
  34.         //$name es el nombre de nuestra plantilla, por ej, listado.php
  35.         //$vars es el contenedor de nuestras variables, es un arreglo del tipo llave => valor, opcional.
  36.  
  37.         //Traemos una instancia de nuestra clase de configuracion.
  38.         $config = Config::singleton();
  39.         $utilidades = Utilidades::singleton();
  40.         $debug = FirePHP::getInstance(true);
  41.         $lenguaje = Language::singleton();
  42.         $url = Url::singleton();
  43.  
  44.         //Armamos la ruta a la plantilla
  45.         $path = $config->get('vista') . $name;
  46.  
  47.         //asingo algunos objetos para que puedas ser usados en el frontend
  48.         $vars['utilidades'] = $utilidades;
  49.         $vars['config'] = $config;
  50.         $vars['debug'] = $debug;
  51.     $vars['leng'] = $lenguaje;
  52.  
  53.         //Si no existe el fichero en cuestion, tiramos un 404
  54.         if (file_exists($path) == false)
  55.         {
  56.             //trigger_error ('El Template `' . $path . '` no existe.', E_USER_NOTICE);
  57.             //return false;
  58.             error_log("El Template: {$path}  no existe - ".date("F j, Y, G:i")."\n", 3,$config->get('root').'/errores.log');
  59.             header("Location:index.php?controlador=error404");
  60.         }
  61.  
  62.         //Si hay variables para asignar, las pasamos una a una.
  63.         if(is_array($vars))
  64.         {
  65.             foreach ($vars as $key => $value)
  66.             {
  67.                 $$key = $value;
  68.             }
  69.         }
  70.         header('Content-Type: text/html; charset=ISO-8859-1');
  71.         //valido si se quiere mostrar el login
  72.         if($name!='login.html'){
  73.             //cargo la vista a mostrar
  74.             ob_start();
  75.             //$contenido=file_get_contents($path);
  76.             if(($config->get('activo')=='1' || $_REQUEST['controlador']=='inicio') && ($config->get('path')!=$config->get('root').'admin')){
  77.                 include_once($config->get('root').$config->get('viewsFolder').'header.html');
  78.                 include ($path);
  79.                 include_once($config->get('root').$config->get('viewsFolder').'footer.html');
  80.             }
  81.             else{
  82.                 include ($path);
  83.             }
  84.             $contenido = ob_get_contents();
  85.            
  86.            
  87.             ob_end_clean();
  88.            
  89.  
  90.             //Finalmente, incluimos la plantilla validando si estoy en el admin o en el frontend
  91.             if(strpos($config->get('path'),'admin')){
  92.                 include($config->get('root').$config->get('adminViewsFolder').'index.html');
  93.             }
  94.             else{
  95.                 include($config->get('root').$config->get('viewsFolder').'index.html');
  96.             }
  97.         }
  98.         else{
  99.             include ($path);
  100.         }
  101.     }
  102. }
  103. /*
  104. El uso es bastante sencillo:
  105. $data['nombre']='Pepe';
  106. $this->Vista->show('listado.php',$data);
  107. */
  108. ?>