Osumi Framework
es en eu v9.12.1 GitHub

Layouts

En Osumi Framework, un layout es un componente especial que envuelve la salida del componente principal de una ruta.

Los layouts se utilizan normalmente para compartir la misma estructura HTML entre varias rutas.

Un layout se aplica después del componente de la ruta y de la fase Middleware afterRender. Recibe la salida actual del componente como su body.

Las respuestas OStreamResponse son una excepción: no tienen un cuerpo materializado que pueda envolverse y no utilizan layout.


1. Flujo de renderizado

Para una respuesta tradicional:

Enrutamiento
↓
Middlewares before
↓
Componente
↓
Middlewares afterRender
↓
Layout
↓
Middlewares afterResponse
↓
Respuesta HTTP

Para una respuesta streaming:

Enrutamiento
↓
Middlewares before
↓
Componente → OStreamResponse
↓
Middlewares afterRender
↓
Middlewares afterResponse
↓
Emisión del stream

Esto significa:

Si before detiene la ejecución, se omiten el componente y el layout.

Si afterRender detiene la ejecución, se omite el layout.


2. Layout predeterminado

Los nuevos proyectos incluyen un layout predeterminado. DefaultLayoutComponent expone normalmente title y body.


3. Definición de layouts en el enrutamiento

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

ORoute::layout() acepta un tercer argumento opcional con Middlewares.

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

ORoute::group() acepta un cuarto argumento opcional con Middlewares.

Aunque una ruta esté dentro de un grupo con layout, si su componente devuelve OStreamResponse ese layout se omite.

Consulta /docs/es/concepts/middlewares.md.


4. Inyección de CSS / JS

Los layouts son el punto donde Osumi Framework inyecta los recursos frontend configurados en documentos que contienen </head>.

Esta inyección no se aplica a respuestas streaming.


5. Mejores prácticas


6. Resumen