Sistema de Plantillas Blade en Laravel: Creación y Uso Eficiente

Clase 11 de 37Curso de Introducción a Laravel 6

Contenido del curso

Crear PlatziPress

Construir Proyecto Final: API con TDD (Intermedio)

Resumen

Construir aplicaciones web mantenibles en Laravel requiere dominar su sistema de plantillas. Blade es el motor que permite separar la estructura HTML del contenido dinámico, facilitando la reutilización de código y la organización de vistas. Entender cómo funciona Blade desde la creación de plantillas hasta la herencia y la inclusión de parciales es fundamental para cualquier proyecto profesional con este framework.

¿Qué es Blade y por qué las vistas usan la extensión .blade.php?

Las vistas en Laravel no son archivos .php comunes, sino que llevan la extensión .blade.php [0:18]. Esta distinción es importante porque habilita toda la sintaxis especial de Blade: las dobles llaves {{ }} para imprimir variables, y el símbolo arroba (@) para directivas como @if, @foreach o @extends. Si un archivo tiene solo la extensión .php, Laravel lo reconoce como vista, pero las funcionalidades propias de Blade no estarán disponibles [1:28].

Para iniciar, se crea un nuevo proyecto desde la terminal y se trabaja dentro de la carpeta resources/views, que es donde residen todas las vistas [0:40].

¿Cómo crear una plantilla base con herencia en Blade?

El concepto central es la herencia de plantillas. En lugar de repetir la estructura HTML completa en cada página, se crea un archivo plantilla, por ejemplo app.blade.php, que contiene todo el esqueleto del documento [1:10].

Dentro de esta plantilla se utiliza la directiva @yield('contenido') para definir la zona donde cada página inyectará su contenido específico [1:22].

  • La vista hija (por ejemplo home.blade.php) usa @extends('app') para indicar qué plantilla hereda [1:40].
  • Se define una @section('contenido') que abre el bloque de contenido.
  • Se cierra con @endsection [1:50].

El flujo funciona como una cascada: la ruta apunta a home, esta vista carga la plantilla app, y el contenido de la sección se inyecta donde se declaró el @yield [2:10]. Al inspeccionar el código fuente en el navegador, se comprueba que la estructura HTML completa está presente gracias a la plantilla.

¿Cómo incluir parciales como header y footer?

Para manejar mejor la organización, Blade permite incluir archivos parciales con la directiva @include [3:00]. Se crean archivos independientes como header.blade.php y footer.blade.php, cada uno con su fragmento de HTML.

Dentro de la plantilla app.blade.php se agregan así:

  • @include('header') antes del @yield('contenido') [3:18].
  • @include('footer') después del contenido [3:25].

Lo interesante es que la vista home ni siquiera necesita saber que el menú y el pie de página existen. Simplemente se ocupa de su propio contenido, mientras la plantilla se encarga de ensamblar todo [3:45].

¿Qué directivas de control se pueden usar en Blade?

Blade soporta todas las estructuras de control de PHP precedidas por arroba [4:10]:

  • @if y @endif para condicionales.
  • @foreach y @endforeach para iterar colecciones.
  • @for, @while y cualquier estructura habitual.

Esta sintaxis es más limpia y legible que mezclar etiquetas PHP directamente en el HTML.

¿Cómo procesa Laravel las plantillas Blade internamente?

Cuando Laravel recibe una solicitud, no muestra directamente el archivo Blade al navegador. En su lugar, compila cada vista en un archivo PHP puro que almacena en la carpeta storage/framework/views [4:30]. Cada vista genera su propio archivo compilado: el header, el footer, la plantilla y las páginas hijas.

Esto significa que el rendimiento no se ve afectado, ya que el servidor ejecuta PHP nativo en cada petición [5:00]. Blade es simplemente una capa de conveniencia que traduce su sintaxis a código PHP estándar.

Separar las vistas en plantillas, secciones y parciales no solo mejora la legibilidad, sino que hace tu proyecto realmente mantenible a largo plazo. ¿Ya definiste cuál será tu plantilla base y qué parciales necesitas? Comparte tu estructura en los comentarios.