Blade para PHP: guía completa con ejemplos prácticos
1. ¿Qué es y para qué sirve?
Blade es un potente y elegante motor de plantillas que forma parte del framework Laravel. Proporciona una sintaxis cómoda para trabajar con plantillas HTML, permitiendo a los desarrolladores separar la lógica de presentación de la lógica de negocio de la aplicación. A diferencia del PHP puro, Blade ofrece construcciones concisas para bucles, condicionales, herencia de plantillas e inserción de componentes, lo que hace que el código sea más legible y fácil de mantener.
La función principal de Blade es simplificar la creación de páginas web dinámicas. Compila las plantillas en código PHP estándar, que se almacena en caché hasta que la plantilla se modifica. Esto garantiza un alto rendimiento, ya que no es necesario recompilar en cada solicitud. Blade también incluye protección integrada contra ataques XSS mediante el escape de salida (función {{ }}).
Blade es ideal para proyectos en Laravel, pero también se puede usar de forma independiente (a través del paquete jenssegers/blade). Soporta herencia de plantillas (layout), secciones, componentes, slots, directivas condicionales y mucho más. Gracias a su simplicidad y flexibilidad, Blade se ha convertido en el estándar de facto para el motor de plantillas en el ecosistema PHP.
2. Instalación
Blade viene incluido con Laravel, por lo que para usarlo dentro del framework no se requiere instalación adicional. Si deseas usar Blade de forma independiente (por ejemplo, en un proyecto sin Laravel), instala el paquete a través de Composer:
composer require jenssegers/blade
Después de la instalación, debes crear una instancia de la clase Blade y especificar las rutas a las plantillas y al caché:
use Jenssegers\Blade\Blade;
$blade = new Blade('views', 'cache');
echo $blade->render('index', ['name' => 'Mundo']);
Donde views es la carpeta con las plantillas y cache es la carpeta para los archivos en caché.
3. Inicio rápido: ejemplo mínimo funcional
Crea un archivo de plantilla views/hello.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>¡Hola, {{ $name }}!</title>
</head>
<body>
<h1>Bienvenido, {{ $name }}!</h1>
@if (strlen($name) > 5)
<p>¡Tienes un nombre largo!</p>
@else
<p>Un nombre corto y bonito.</p>
@endif
</body>
</html>
Ahora crea un script PHP para renderizarlo:
require 'vendor/autoload.php';
use Jenssegers\Blade\Blade;
$blade = new Blade('views', 'cache');
echo $blade->render('hello', ['name' => 'Alejandro']);
Resultado: una página HTML con un saludo y un mensaje condicional.
4. Métodos/funciones/clases principales
4.1. @extends — herencia de plantillas
Firma: @extends('layout.name')
Qué hace: Indica que la plantilla actual hereda de otra plantilla (padre).
Ejemplo:
<!-- layouts/app.blade.php -->
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
</body>
</html>
<!-- pages/home.blade.php -->
@extends('layouts.app')
@section('title', 'Página de inicio')
@section('content')
<h1>¡Bienvenido!</h1>
@endsection
4.2. @section y @yield — secciones
Firma: @section('name', 'default') y @yield('name', 'default')
Qué hace: Define una sección de contenido que se insertará en la plantilla padre a través de @yield.
Ejemplo:
<!-- parent.blade.php -->
<div>
@yield('sidebar', 'Barra lateral predeterminada')
</div>
<!-- child.blade.php -->
@extends('parent')
@section('sidebar')
<ul>
<li>Inicio</li>
<li>Acerca de</li>
</ul>
@endsection También en la biblioteca
Trabajo con imágenes en C# (.NET): guía completa
Procesamiento de JSON en Go (Golang): encoding/json y alternativas
Trabajo con imágenes en Rust: revisión de las bibliotecas image, fast_image_resize y otras