Livewire es un framework para Laravel que te permite crear interfaces dinámicas de forma simple, sin dejar de lado la comodidad de Blade. En esta serie de videotutoriales te enseñaré como utilizar Laravel Livewire para convertir tus módulos en interfaces dinámicas. Comencemos con la instalación de Livewire.
Mira el código en GitHub: actual, resultado, comparación.
Notas
Por Ambar Quintana.
Iniciaremos esta serie a partir de la lección 56 del curso Crea un Panel de Control con Laravel, donde actualizamos nuestro proyecto a la versión 7 del framework.
Instalar Livewire
Instalar Livewire es muy sencillo, para ello ejecuta en la consola:
composer require livewire/livewire
Crear nuevo Layout de Livewire
Para utilizar Livewire en nuestro proyecto, vamos a crear un nuevo layout llamado livewire-layout.blade.php
dentro de resources/views/
En este nuevo layout, vamos a extender de layout.blade.php
e incluiremos Livewire, de la siguiente manera:
@extends('layout') @push('styles') @livewireStyles @endpush @push('scripts') @livewireScripts @endpush
Para que esto funcione, debemos agregar la directiva @stack
dentro de layout.blade.php
, y en ella incluir las secciones styles
y scripts
:
<!doctype html> <html lang="en"> <head> // código ... @stack('styles') </head> <body> //código ... @stack('scripts') </body> </html>
Puedes aprender más sobre Stacks o Pilas leyendo la documentación de Blade en español.
Extender Layout de Livewire
Vamos a resources/views/users/index.blade.php
y en lugar de extender de nuestra plantilla layout
, vamos a extender de livewire-layout
:
@extends('livewire-layout')
De vuelta al navegador, si inspeccionamos nuestro proyecto, podremos ver una nueva etiqueta de Javascript donde se incluye Livewire, así como los estilos que éste requiere por defecto.
Crear componentes con Livewire
Podemos crear nuestro primer componente con Livewire ejecutando en la consola el comando make:livewire
, seguido del nombre del componente:
php artisan make:livewire users-list
Una vez hecho esto, se van a generar dos nuevos archivos:
El primero se llamará users-list.blade.php
y será la vista de nuestro componente, la cual estará en el directorio resources/views/livewire/
.
Vamos a agregar un título dentro de esta vista:
<div> <h3>Users list here</h3> </div>
El segundo archivo generado es UsersList.php
y corresponderá a la clase donde escribiremos la lógica del componente, estará dentro del directorio app/Http/Livewire/
.
Incluir componente de Livewire en vistas de Blade
En resources/views/users/index.blade.php
vamos a incluir nuestro componente usando la directiva @livewire
:
@extends('livewire-layout') @section('title', 'Usuarios') @section('content') //código ... @livewire('users-list') @includeWhen($view == 'index', 'users._filters') //código ...
Si regresamos al navegador y recargamos la página, podremos ver el título de nuestro componente.
Como paso adicional, vamos a mover la vista del componente al directorio resources/views/users/
y cambiaremos su nombre a _livewire-list.blade.php
.
No olvides modificar el llamado a la vista del componente en el método render
de app/Http/Livewire/UsersList.php
.
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección siguiente Paso de datos desde controladores y vistas hacia componentes de Laravel Livewire