Introducción
Blade es el motor de plantillas simple pero potente que incluye Laravel. A diferencia de algunos motores de plantillas de PHP, Blade no limita el uso de código PHP puro dentro de las plantillas. Todas las plantillas Blade se compilan a código PHP y se cachean, por lo que apenas añade sobrecarga a la aplicación. Los archivos de plantilla Blade usan la extensión.blade.php y normalmente se guardan en el directorio resources/views.
Flujo de compilación de Blade
Muestra cómo un archivo.blade.php se convierte en una respuesta HTML. Una vez compilado, el archivo se cachea; las siguientes solicitudes de la misma plantilla saltan la compilación.
Mostrar datos
Para mostrar datos pasados a la vista, encierra la variable entre dobles llaves.{{ }} de Blade pasa automáticamente el valor por htmlspecialchars de PHP para prevenir ataques XSS.Mostrar sin escapar
Para mostrar sin escapar, usa la sintaxis{!! !!}.
Convivencia con frameworks JavaScript
Si tu framework JavaScript también usa llaves, escapa el renderizado de Blade con@.
@ y {{ name }} llega tal cual al navegador para que lo procese el framework de JavaScript.
Si dudas entre centrarte en Blade o ampliar hacia Livewire o Inertia, consulta Frontend.
Directivas de Blade
Condicionales (if)
@unless permite escribir “salvo que…”.
@isset y @empty.
Directivas de autenticación
Switch
Bucles
Blade ofrece directivas cómodas para bucles.@break y @continue controlan el flujo.
Variable de bucle
Dentro de@foreach puedes usar $loop para obtener información del bucle.
| Propiedad | Descripción |
|---|---|
$loop->index | Índice actual (empieza en 0) |
$loop->iteration | Número de iteración (empieza en 1) |
$loop->remaining | Iteraciones restantes |
$loop->count | Número de elementos del array |
$loop->first | ¿Primera iteración? |
$loop->last | ¿Última iteración? |
$loop->even | ¿Iteración par? |
$loop->odd | ¿Iteración impar? |
$loop->depth | Nivel de anidación actual |
$loop->parent | En bucles anidados, la variable del bucle padre |
Comentarios
Los comentarios de Blade no aparecen en la página renderizada.Layouts
Layout con componentes
Para crear layouts en Laravel se recomiendan los componentes Blade. Primero, crea el componente de layout.Layout con herencia de plantillas
La forma clásica usa herencia con@extends, @section y @yield.
Definición del layout padre:
Con
@parent puedes conservar el contenido del @section padre y añadir más.Incluir subvistas
@include incrusta una vista Blade dentro de otra.
Todas las variables disponibles en la vista padre lo estarán también en la incluida.
Protección CSRF en formularios
En formularios HTML que envíenPOST, PUT, PATCH o DELETE en rutas del archivo web, incluye siempre @csrf.
PUT, PATCH o DELETE desde un formulario, usa @method.
Consulta Protección CSRF para los detalles operativos, como la validación de Origin y las cabeceras
X-CSRF-TOKEN / X-XSRF-TOKEN.Resumen
Resumen de las funcionalidades principales de Blade.Mostrar datos
Mostrar datos
{{ $variable }} para mostrar con escape; {!! $variable !!} sin escape.Condicionales
Condicionales
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.Bucles
Bucles
@for, @foreach, @forelse, @while y la variable $loop.Layouts
Layouts
Basados en componentes (
<x-layout> con {{ $slot }}) o con herencia (@extends, @section, @yield).Subvistas
Subvistas
Reutilización de vistas con
@include.