Laravel 5.4 #18 : Notificaciones

Laravel nos permite el envío de notificaciones a usuarios a través de diferentes vías (SMS, mail, etc.). En este post, añadiremos notificaciones a nuestro proyecto, pero serán un tipo de notificaciones que se guardarán en la base de datos y se mostrarán en una pestaña en el header.

Creamos la tabla en la base de datos para las notificaciones, Laravel nos provee un comando para hacerlo:

La ejecutamos:

 

Creamos el archivo de la notificación:

En este caso, será una notificación que se lanzará cuando haya un nuevo comentario en los posts y será enviada al usuario creador del post, avisándole de que un usuario ha comentado en uno de sus posts.

  • Post::find($this->comment->post_id)  y User::find($this->comment->user_id) , también se podría poner con los métodos de la relación del modelo. Quedaría así $this->comment->post  y $this->comment->user .
  • En la función via indicamos el tipo, podríamos añadir más de uno.
  • En la función toDatabase añadimos los datos que queremos acceder cuando mostremos la notificación, ahora veremos cómo hacerlo.

Puedes encontrar más información en la documentación.

Abrimos el CommentsController.php  y modificamos la función store para que quede así:

Esa línea es la que hace que se envíe la notificación al usuario indicado.

Se podría añadir que una vez un usuario comente en un post, siempre que ese post tenga un comentario nuevo se le avise.

 

Ahora vamos a añadir el código para que se muestren las notificaciones del usuario logueado. Añadir este código en el header cuando el usuario está logueado:

Y nos debería salir algo como ésto:

 

Fácilmente, se podría añadir con jQuery y Ajax que cuando se haga click en el botón Notifications se marquen como leídas las notificaciones de la lista.

 

-

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


Aloja tu proyecto en DigitalOcean: Obtén $100 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

9 comentarios en “Laravel 5.4 #18 : Notificaciones

  1. Hola, aqui tengo un error de la clase App\Http\Request\CommentRequest does not exist, no se en que parte tengo que agreagar la linea, estuve revisando y la tengo en el controlador commentsController pero no se si tengo que agregarla en alguna otra seccion, he estado revisando y aun no logro resolverlo, como siempre te agradesco tu tiempo.

    1. Hola Billy,

      ¿Has creado la clase CommentRequest? Se crea en este artículo: https://fullstackseries.com/laravel-5-4-17-anadir-comentarios-los-posts/

      Si no la has creado por cualquier motivo (aunque yo te recomiendo que la crees), lo que puedes hacer en vez de poner CommentRequest poner Request en el método (en este caso store) y entonces podrás borrar la línea:use App\Http\Requests\CommentRequest;. Lo que pasa es que con Request no se comprobará que el usuario esté logueado para poder comentar y tampoco se comprobarán que los datos enviados del comentario sean correctos. Tendrás que hacer estas validaciones de otra manera (https://laravel.com/docs/5.4/validation).

      Un saludo!

      1. Hola, si he creado la clase commentRequest, he revisado todos los pasos y todo esta correcto y me sigue saliendo el mismo error, ademas me he fijado que sale otro error es este: Whoops, looks like something went wrong.
        (1/1) FatalErrorException
        Trait ‘App\Http\Request\CommentRequest’ not found
        in Comment.php (line 13)
        He revisado todas las partes del codigo y estan bien.

        1. He hecho toda la seccion de nuevo y el erro ha desaparecido, asiq ue algun paso debi haber hecho mal, pero ahora me salio este error FatalErrorException
          Call to a member function name() on null
          in web.php (line 28)

          1. Disculpa es este error elq eu me sale «InvalidArgumentException
            Route [posts.show] not defined.
            in UrlGenerator.php (line 304)»

  2. muy bueno esto amigo, explicas muy bien, yo quiero algo parecido, pero en mi caso quiero que si otro usuario comenta notificarle a ese usuario si alguien comento en el mismo post, pero el problema es que no se como hacer que los usuarios que no hallan comentado en dicho post no reciban notificaciones, a demas de que tambien tendria que darle al usuario al que se le esta notificando la opcion de desactivar las notificaciones para ese post en especifico, no se si se pueda hacer algo asi

Deja una respuesta

  Acepto la política de privacidad