/** * 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; } }
function setContent($content = '', $append = false) { if ($append) { self::$_content .= $content; } else { self::$_content = $content; } }