Example #1
0
 /**
  * Renderiza la vista
  *
  * @param Controller $controller
  * @param string $url url a renderizar
  */
 public static function render($controller, $_url)
 {
     /**
      * @see Tags
      */
     require CORE_PATH . 'extensions/helpers/tags.php';
     /**
      * Mapea los atributos del controller en el scope
      *
      **/
     extract(get_object_vars($controller), EXTR_OVERWRITE);
     /**
      * Intenta cargar la vista desde la cache si esta en producion,
      * si no renderiza
      *
      **/
     if (!PRODUCTION || $cache['type'] != 'view' || !(self::$_content = Cache::get($_url, 'kumbia.views'))) {
         /**
          * Carga el el contenido del buffer de salida
          *
          **/
         self::$_content = ob_get_clean();
         if ($module_name) {
             $controller_views_dir = APP_PATH . "views/{$module_name}/{$controller_name}";
         } else {
             $controller_views_dir = APP_PATH . "views/{$controller_name}";
         }
         if ($response && $response != 'view') {
             $controller_views_dir = "{$controller_views_dir}/{$response}";
         }
         /**
          * Renderizar vista
          *
          **/
         if ($view) {
             ob_start();
             $file = "{$controller_views_dir}/{$view}.phtml";
             if (!is_file($file)) {
                 throw new KumbiaException("Vista {$view}.phtml no encontrada");
             }
             include $file;
             if (PRODUCTION && $cache['type'] == 'view') {
                 Cache::save(ob_get_contents(), $cache['time'], $_url, 'kumbia.views');
             }
             /**
              * Verifica si se debe renderizar solo la vista
              *
              **/
             if ($response == 'view' || $response == 'xml') {
                 ob_end_flush();
                 return;
             }
             self::$_content = ob_get_clean();
         }
     } else {
         ob_clean();
     }
     /**
      * Renderizar template
      *
      **/
     if ($template) {
         $template = APP_PATH . "views/templates/{$template}.phtml";
     } else {
         $template = APP_PATH . "views/templates/{$controller_name}.phtml";
     }
     if (is_file($template)) {
         ob_start();
         include $template;
         if (PRODUCTION && $cache['type'] == 'template') {
             Cache::save(ob_get_contents(), $cache['time'], $_url, 'kumbia.templates');
         }
         ob_end_flush();
         return;
     }
     if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
         echo utf8_encode(self::$_content);
     } else {
         echo self::$_content;
     }
 }
Example #2
0
 function setContent($content = '', $append = false)
 {
     if ($append) {
         self::$_content .= $content;
     } else {
         self::$_content = $content;
     }
 }