Para quienes recién se adentran en el mundo de Laravel, los slots son una forma de pasar contenido dinámico desde la vista principal hacia un componente. Dicho de otra manera, son como espacios reservados dentro de un componente que puedes rellenar desde donde lo llames.
Laravel maneja dos tipos de slots:
Ambos son muy útiles dependiendo de la complejidad de tu interfaz.
Desde mi experiencia, los slots me han permitido:
Por ejemplo, si tienes una tarjeta o modal reutilizable, con slots puedes definir qué contenido quieres mostrar sin tener que duplicar todo el HTML.
👉 Ejemplo:
Piensa en una tarjeta con un título, cuerpo y pie de página. Cada uno de estos puede definirse con un slot.
Este tipo de slot se usa cuando solo necesitas pasar un contenido simple y único al componente.
Componente Blade (resources/views/components/alert.blade.php
):
<div class="alert alert-{{ $type }}">
{{ $slot }}
</div>
Uso en Vista:
<x-alert type="success">
¡Operación realizada con éxito!
</x-alert>
✅ Lo que sucede aquí:
El contenido que colocas entre las etiquetas <x-alert>
y </x-alert>
se inyecta en {{ $slot }}
dentro del componente.
Cuando necesitas múltiples secciones dinámicas en un componente, los slots con nombre son la solución.
Componente Blade (resources/views/components/card.blade.php
):
<div class="card">
<div class="card-header">
{{ $title }}
</div>
<div class="card-body">
{{ $slot }}
</div>
<div class="card-footer">
{{ $footer }}
</div>
</div>
Uso en Vista:
<x-card>
<x-slot name="title">
Título de la Tarjeta
</x-slot>
Este es el contenido principal de la tarjeta.
<x-slot name="footer">
Pie de página de la tarjeta
</x-slot>
</x-card>
✅ Lo que sucede aquí:
title
se coloca en {{ $title }}
footer
en {{ $footer }}
{{ $slot }}
Me encanta esta forma porque hace que todo sea súper claro y ordenado 📝.
Te comparto algunos consejos que me han servido mucho:
header
, footer
, actions
).
✔️ Mejoran la organización de vistas.
✔️ Facilitan la reutilización de componentes.
✔️ Reducen errores y duplicación de código.
✔️ Permiten trabajar en equipo de forma más clara.
✔️ Se integran perfectamente con Tailwind CSS o cualquier otro framework de estilos.
Yo desde que los incorporé en mis proyectos, el código se volvió mucho más mantenible y comprensible para todo el equipo 🎉.
Puedes crear un componente de modal reutilizable y personalizar su contenido, botones y título usando slots.
Define un componente card-product
y usa slots para colocar el título, imagen, descripción y precio.
Combina slots con componentes anidados para estructurar páginas enteras con distintas secciones.
Los slots en componentes de Laravel son una herramienta increíblemente poderosa que recomiendo utilizar en cualquier proyecto Blade. No solo mejoran la organización del código, sino que permiten crear interfaces modulares, limpias y fáciles de mantener.
Si aún no los has probado, te animo a que experimentes con ellos. Una vez que los dominas, se vuelven imprescindibles en el flujo de trabajo diario 👌.
Jorge García
Fullstack developer