Osumi Framework
es en eu v9.8.0 GitHub

Diseños

En Osumi Framework, un diseño es un tipo especial de componente que envuelve la salida del componente de acción principal.

Los diseños se suelen usar para compartir la misma estructura HTML en múltiples rutas (por ejemplo: <head>, metadatos, encabezado/pie de página, inyección de scripts/estilos, etc.).

Un diseño se aplica después de que el componente de ruta se ejecute y renderice, y recibe la salida renderizada como su body.


1. Cómo funcionan los diseños (Flujo de renderizado)

Cuando se encuentra una ruta, Osumi Framework ejecuta esta secuencia:

  1. Se resuelve la ruta (Enrutamiento).
  2. Se ejecutan los filtros (si los hay).
  3. Se instancia y renderiza el componente de ruta.
  4. Si se define un diseño para la ruta, este se instancia y recibe:
    • title: título predeterminado de la configuración
    • body: la salida renderizada del componente de ruta
  5. Se renderiza la plantilla de diseño, generando la respuesta final.

Esto significa:


2. Diseño predeterminado

Al crear un nuevo proyecto de Osumi Framework, se genera un diseño predeterminado.

2.1 Componente de Diseño Predeterminado

DefaultLayoutComponent es un componente muy simple que solo define las propiedades públicas utilizadas por su plantilla:

2.2 Plantilla de Diseño Predeterminado

La plantilla de diseño predeterminado contiene un esqueleto HTML estándar y utiliza dos marcadores de posición:

Esto convierte al diseño predeterminado en un contenedor genérico para la mayoría de las páginas renderizadas por el servidor.


3. Definición de un diseño en el enrutamiento (IMPORTANTE)

Puede asignar un diseño en el enrutamiento de dos maneras:

3.1 Grupo de diseños

Use ORoute::layout() para aplicar un diseño a varias rutas:

use Osumi\OsumiFramework\Routing\ORoute;
use Osumi\OsumiFramework\App\Layout\MainLayoutComponent;

ORoute::layout(MainLayoutComponent::class, function() {
  ORoute::get('/home', HomeComponent::class);
  ORoute::get('/contact', ContactComponent::class);
});

3.2 Grupo de Diseño + Prefijo

Usa ORoute::group() para combinar un prefijo de URL y un diseño:

use Osumi\OsumiFramework\Routing\ORoute;
use Osumi\OsumiFramework\App\Layout\AdminLayoutComponent;

ORoute::group('/admin', AdminLayoutComponent::class, function() {
  ORoute::get('/dashboard', DashboardComponent::class);
  ORoute::get('/settings', SettingsComponent::class);
});

Esta es la forma recomendada de aplicar un diseño personalizado de forma consistente a un área de tu aplicación.


4. Inyección de CSS/JS

Los diseños también son el lugar donde Osumi Framework inyecta recursos CSS y JS.

Cuando la salida del diseño contiene una etiqueta </head>, el framework inserta automáticamente:

Esto convierte al diseño en el punto natural donde se ensamblan los recursos globales del frontend.


5. Mejores prácticas


6. Resumen