Laravel 5.4 #15 : Eventos

Laravel tiene una característica llamada Events que nos permite lanzar un evento y escucharlo a través de los Listeners. Nosotros para poner en práctica esta característica, escucharemos el evento login y guardaremos la fecha de login para saber cuanto hace de la última vez que un usuario se ha logueado.

Para hacer esto, me he basado en este artículo.

Primero de todo, tenemos que añadir el campo a la base de datos. Por tanto, tenemos que crear una migración:

Añadimos este código:

Ejecutamos las migraciones:

 

Ahora, tenemos que registrar el evento y su listener. Abrimos EventServiceProvider.php y en el array de $listen añadimos este código:

Una vez hecho esto, ejecutamos el siguiente comando que lo que hará será crear tanto los events como los listeners que haya en el array.

El evento no se creará porque es nativo de Laravel, pero el listener sí. Lo podemos encontrar en app/Listeners :

La función handle accede al usuario enviado desde el evento (Login), añade la fecha de último login (que será la de ahora) al objeto y lo guarda en la base de datos.

Para mostrar el valor en la vista basta con poner esto:

Si quieres darle formato, podemos hacerlo así:

Y tendremos que añadir al modelo User.php ésto:

 

En este post sólo hemos creado un listener (LastLogin) ya que el evento que utilizamos (Login) es nativo de Laravel, si quieres ver como se crea un evento personalizado puedes hacerlo en la documentación de Laravel, es muy simple.

-

– https://laravel.com/docs/5.4/events

– http://paulcracknell.com/79/laravel-event-handler-last-login/


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Un comentario en “Laravel 5.4 #15 : Eventos

  1. Al momento de crear la columna con la migración manda un error que necesita un valor por default, agregue:
    $table->timestamp(‘last_login’)->nullable();
    y todo corrió perfecto.

    Saludos

Deja una respuesta

  Acepto la política de privacidad