Add option to use another extensions, js and css methods.

This commit is contained in:
KJ 2023-09-15 21:26:53 -04:00
parent 341d7837a1
commit e2094ccb4a

View File

@ -14,20 +14,36 @@ namespace Libs;
class View extends Neuron { class View extends Neuron {
/** /**
* Función que "renderiza" las vistas * Incluye el archivo.
* *
* @param string $viewName * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo.
* Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views * @param string $viewPath (opcional) Ruta donde se encuentra la vista.
* * @param string $extension (opcional) Extensión del archivo.
* @param array $params
* (opcional) Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index)
*
* @param string $viewPath
* (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* *
* @return void * @return void
*/ */
public static function render(string $viewName, array $params = [], string $viewPath = null): void { private function include(string $viewName, string $viewPath = null, string $extension = 'php'): void {
$view = $this;
if (isset($viewPath) && file_exists("$viewPath$viewName.$extension")) {
include("$viewPath$viewName.$extension");
return;
}
include(ROOT_DIR."/src/Views/$viewName.$extension");
}
/**
* Función que "renderiza" las vistas
*
* @param string $viewName Ruta relativa y el nommbre sin extensión del archivo.
* @param array $params (opcional) Arreglo que podrá ser usado en la vista mediante $view ($param['index'] se usaría así: $view->index)
* @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* @param string $extension (opcional) Extensión del archivo.
*
* @return void
*/
public static function render(string $viewName, array $params = [], string $viewPath = null, string $extension = 'php'): void {
$instance = new View($params); $instance = new View($params);
$instance->html($viewName, $viewPath); $instance->html($viewName, $viewPath);
} }
@ -35,28 +51,49 @@ class View extends Neuron {
/** /**
* Renderiza las vistas HTML * Renderiza las vistas HTML
* *
* @param string $viewName * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views
* Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views * @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* @param string $extension (opcional) Extensión del archivo.
* *
* @param string $viewPath
* (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* @return void * @return void
*/ */
public function html(string $viewName, string $viewPath = null): void { public function html(string $viewName, string $viewPath = null, string $extension = 'php'): void {
$view = $this; $this->include($viewName, $viewPath, $extension);
}
if (isset($viewPath) && file_exists($viewPath.$viewName.'.php')) { /**
include($viewPath.$viewName.'.php'); * Renderiza código CSS.
return; *
} * @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views
* @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* @param string $extension (opcional) Extensión del archivo.
*
* @return void
*/
public function css(string $viewName, string $viewPath = null, string $extension = 'css'): void {
header("Content-type: text/css");
$this->include($viewName, $viewPath, $extension);
}
include(ROOT_DIR.'/src/Views/'.$viewName.'.php'); /**
* Renderiza código Javascript.
*
* @param string $viewName Ruta relativa y el nommbre sin extensión del archivo ubicado en src/Views
* @param string $viewPath (opcional) Ruta donde se encuentra la vista. En caso de que la vista no se encuentre en esa ruta, se usará la ruta por defecto "src/Views/".
* @param string $extension (opcional) Extensión del archivo.
*
* @return void
*/
public function js(string $viewName, string $viewPath = null, string $extension = 'js'): void {
header("Content-type: application/javascript");
$this->include($viewName, $viewPath, $extension);
} }
/** /**
* Imprime los datos en Json. * Imprime los datos en Json.
* *
* @param object|array $data * @param object|array $data Objeto o array que se imprimirá a JSON.
*
* @return void * @return void
*/ */
public function json(object|array $data): void { public function json(object|array $data): void {
@ -67,7 +104,8 @@ class View extends Neuron {
/** /**
* Imprime los datos en texto plano * Imprime los datos en texto plano
* *
* @param string $txt * @param string $txt Contenido de texto.
*
* @return void * @return void
*/ */
public function text(string $txt): void { public function text(string $txt): void {