El panel implementa un sistema de plantillas propio basado en PHP puro. La plantilla maestraDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/jpbarbatic/webapp/llms.txt
Use this file to discover all available pages before exploring further.
html/plantilla.html.php genera el documento HTML completo —cabecera, navegación, zona de contenido y scripts— e incluye dinámicamente los fragmentos específicos de cada vista. Este diseño elimina la duplicación de código: todos los controladores comparten el mismo esqueleto HTML y solo aportan los fragmentos que les son propios.
Cómo funciona
Cada controlador define la variable$vista con la ruta relativa (sin extensión) al subdirectorio html/ correspondiente a la vista que quiere mostrar. Por ejemplo, el listado de productos asigna:
$vista, la plantilla maestra busca y carga hasta tres fragmentos para esa vista, además de los componentes comunes:
Fragmentos cargados por la plantilla:
file_exists() para verificar la existencia de los fragmentos opcionales antes de incluirlos, de modo que una vista sin estilos propios o sin JavaScript específico no genera ningún error.
La barra de navegación (html/nav.html.php) también recibe $vista para marcar el elemento activo del menú, comparando el prefijo de $vista con el nombre del módulo:
Mensajes flash
El sistema de mensajes flash permite que un controlador comunique el resultado de una operación (guardar, borrar, etc.) a la siguiente petición usando sesión. La plantilla lee dos claves de$_SESSION['mensaje'] y renderiza alertas Bootstrap:
$_SESSION['mensaje']['ok']— Alerta verde (alert-success) para operaciones completadas con éxito.$_SESSION['mensaje']['ko']— Alerta roja (alert-danger) para errores o validaciones fallidas.
public/login.php guarda el mensaje de error de credenciales incorrectas como una cadena plana: $_SESSION['mensaje'] = 'Usuario y/o contraseña incorrectos'. El formulario de login (html/login.html.php) gestiona este caso directamente, ya que la plantilla maestra no interviene en la página de login.Convenciones de nomenclatura
Cada vista puede componerse de hasta tres ficheros dentro dehtml/, todos con el mismo nombre base y sufijos diferentes:
| Sufijo | Ubicación en el HTML | Propósito |
|---|---|---|
.html.php | Dentro de <main class="container"> | Markup del contenido principal de la vista (tablas, formularios, tarjetas, etc.) |
.css.php | Dentro de <head>, tras los estilos globales | Estilos CSS exclusivos de la vista, incrustados como <style> o como <link> adicional |
.script.php | Antes de </body>, tras los scripts globales | JavaScript exclusivo de la vista (inicialización de plugins, validaciones, llamadas AJAX, etc.) |
productos/listado los tres ficheros serían:
Activos estáticos
La plantilla carga los siguientes activos desde el directoriopublic/assets/:
- Bootstrap 5 CSS —
assets/bootstrap/dist/css/bootstrap.min.css - Bootstrap 5 JS Bundle —
assets/bootstrap/dist/js/bootstrap.bundle.min.js(incluye Popper.js) - Dashboard CSS —
assets/dashboard.css, hoja de estilos personalizada del panel
.css.php) se inyectan en el <head> después de dashboard.css, respetando así el orden de cascada de CSS y permitiendo que cada vista sobrescriba estilos globales si es necesario.
La etiqueta <base href="<?= URL_BASE ?>"> en el <head> garantiza que todas las URLs relativas del HTML (enlaces, imágenes, formularios) se resuelvan correctamente con independencia de la profundidad del módulo actual.