Contenido del curso
Proyecto con Laravel 8
- 5

Creación de Proyecto Web con Laravel 8 y Tailwind CSS
03:03 min - 6

Instalación y Configuración de Laravel 8 con Tailwind CSS
11:18 min - 7

Creación de Datos Semilla en Laravel con Faker
09:55 min - 8

Configuración de Rutas y Vistas en Laravel con JetStream
10:01 min - 9

Creación de Plantillas Web con Blade y Tailwind CSS en Laravel
11:16 min - 10

Configuración de Plantillas Blade en Visual Studio Code
08:21 min - 11

Creación de Componentes Dinámicos con Livewire en Laravel
Viendo ahora - 12

Creación de Campos Virtuales en Componentes con Tailwind CSS
12:05 min - 13

Creación de Controladores y Rutas en Laravel 8
07:45 min - 14

Rutas dinámicas y maquetación de cursos en PHP con Laravel
11:31 min - 15

Configuración de Listado de Lecciones en Visual Studio
07:08 min - 16

Configuración de Cursos Similares en Visual Studio
06:34 min - 17

Creación y Uso de Componentes Blade en Laravel
05:43 min - 18

Personalización de Elementos en JetStream con Visual Studio
06:04 min
Conclusión
Bonus
Creación de Componentes Dinámicos con Livewire en Laravel
Resumen
Construir interfaces dinámicas sin escribir montañas de código PHP es posible gracias a Livewire, la tecnología que Laravel recomienda para trabajar con componentes reutilizables. A continuación se explica cómo crear un componente desde cero, conectarlo con una consulta a la base de datos y configurar relaciones Eloquent para que todo funcione correctamente.
¿Qué es Livewire y por qué usarlo en Laravel?
Livewire permite crear interfaces dinámicas de forma simple y sencilla [0:06]. En el pasado, cuando se necesitaba mostrar diferentes elementos en una sola vista, se recurría a un controlador con múltiples métodos y consultas. Livewire cambia ese enfoque: cada pieza de la interfaz se convierte en un componente independiente que encapsula tanto la lógica PHP como el HTML correspondiente, lo que resulta en proyectos más modernos y profesionales.
¿Cómo se crea un componente con el comando artisan?
El proceso comienza en la terminal con el comando php artisan make:livewire seguido del nombre del componente [0:44]. Por ejemplo, para un listado de cursos:
bash php artisan make:livewire ListadoCursos
- Se utiliza CamelCase porque el nombre funciona como una clase PHP [0:56].
- Laravel genera automáticamente dos archivos: una clase PHP y una vista Blade.
- En la carpeta de vistas, el nombre se transforma a minúsculas separadas por guiones:
listado-cursos.blade.php[1:24].
Todo componente debe tener un único contenedor (un div que abre y cierra) para que el renderizado funcione correctamente [1:56].
¿Cómo se invoca el componente dentro de una vista?
Para mostrar el componente basta con usar una etiqueta HTML especial dentro de la vista principal [1:35]:
html <livewire:listado-cursos />
Al actualizar el navegador, el contenido del componente se renderiza directamente en la página index [1:44].
¿Dónde se programa la lógica del componente?
La clase PHP del componente se encuentra en app/Http/Livewire/ [2:06]. Su método render() es el encargado de devolver la vista asociada. Dentro de este método se pueden ejecutar consultas Eloquent y pasar variables a la vista, exactamente igual que en un controlador tradicional.
Por ejemplo, para obtener un listado de cursos con sus usuarios asociados y limitado a nueve registros [2:28]:
php public function render() { $cursos = Course::latest()->with('user')->take(9)->get();
return view('livewire.listado-cursos', compact('cursos'));
}
latest()ordena los resultados por los más recientes.with('user')carga la relación con el usuario (eager loading) para evitar el problema de consultas N+1.take(9)limita los resultados a nueve elementos.get()es el método obligatorio que ejecuta la consulta [2:52].
¿Cómo configurar relaciones Eloquent entre modelos?
Al intentar cargar la relación user sin haberla definido, Laravel arroja un error indicando que la relación no existe [3:02]. Aunque la clave foránea se creó en la migración, es necesario declarar la relación en el modelo Eloquent.
Dentro del modelo Course se añade un método que define que un curso pertenece a un usuario (belongs to) [3:18]:
php public function user() { return $this->belongsTo(User::class); }
belongsToindica una relación de pertenencia: cada curso tiene un dueño.- El nombre del método (
user) coincide con el nombre de la relación que se invoca enwith('user').
¿Cómo iterar los resultados en la vista del componente?
Una vez configurada la consulta y la relación, la vista del componente puede recorrer los resultados con @foreach [3:55]:
blade @foreach($cursos as $course) {{ $course->id }} @endforeach
Al actualizar el navegador aparecen todos los IDs de los cursos obtenidos, confirmando que el componente funciona correctamente [4:10].
La estructura queda clara: la vista index consume un componente Livewire, la lógica de la consulta vive en la clase del componente, y las relaciones se definen en los modelos Eloquent. Practica creando tu propio componente para familiarizarte con cada archivo involucrado y comparte en los comentarios cómo te fue con el ejercicio.