7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Laravel

Notificaciones en Laravel

Scroll to top
Read Time: 8 mins

Spanish (Español) translation by Rene Soto (you can also view the original English article)

En este artículo, vamos a explorar el sistema de notificación en el marco web de Laravel.  El sistema de notificación en Laravel te permite enviar notificaciones a los usuarios a través de diferentes canales. Hoy, discutiremos cómo puedes enviar notificaciones por el canal de correo. 

Conceptos Básicos de las Notificaciones 

Durante el desarrollo de la aplicación, a menudo necesita notificar a los usuarios sobre los diferentes cambios de estado. Podría ser enviar notificaciones por correo electrónico cuando se cambia el estado de la orden o enviar un SMS sobre tu actividad de inicio de sesión por razones de seguridad.  En particular, estamos hablando de mensajes que son cortos y solo proporcionan información sobre los cambios de estado. 

Laravel ya proporciona una función integrada que nos ayuda a lograr algo similar: notificaciones. De hecho, hace que enviar mensajes de notificación a los usuarios sea una experiencia sencilla y divertida. 

La belleza de este enfoque es que ye permite elegir entre diferentes canales en los que se enviarán las notificaciones. Repasemos rápidamente los diferentes canales de notificación compatibles con Laravel. 

  • Correo: las notificaciones se enviarán en forma de correo electrónico a los usuarios.
  • SMS: como su nombre indica, los usuarios recibirán notificaciones por SMS en sus teléfonos.
  • Slack: en este caso, las notificaciones se enviarán en los canales de Slack. 
  • Base de datos: esta opción le permite almacenar notificaciones en una base de datos en caso de que desee construir una interfaz de usuario personalizada para mostrarla.

Entre los diferentes canales de notificación, utilizaremos el canal de correo en nuestro caso de uso de ejemplo que vamos a desarrollar a lo largo de este tutorial. 

De hecho, será un caso de uso bastante simple que permite a los usuarios de nuestra aplicación enviar mensajes a cada usuario.  Cuando los usuarios reciben un nuevo mensaje en su bandeja de entrada, les notificaremos sobre este evento enviándoles un correo electrónico. Por supuesto, lo haremos usando la función de notificación de Laravel. 

Crear una Clase de Notificación Personalizada 

Como mencionamos anteriormente, vamos a configurar una aplicación que permita a los usuarios de nuestra aplicación enviarse mensajes entre ellos. Por otro lado, notificaremos a los usuarios cuando reciban un mensaje nuevo de otros usuarios por correo electrónico. 

En esta sección, crearemos los archivos necesarios que se requieren para implementar el caso de uso que estamos buscando.

Para empezar, creemos el modelo Message que contiene los mensajes enviados por los usuarios entre sí.

También necesitamos agregar algunos campos to, from, y message a la tabla de messages. Cambiemos el archivo de migración antes de ejecutar el comando migrate

Ahora, ejecutemos el comando migrate que crea la tabla de mensajes en la base de datos.

Eso debería crear la tabla de messages en la base de datos.

Además, asegúrate de haber habilitado el sistema de autenticación Laravel predeterminado en primer lugar para que funciones como el registro y el inicio de sesión funcionen de la caja. Si no estás seguro de cómo hacerlo, la documentación de Laravel proporciona una visión rápida de eso.

Dado que cada notificación en Laravel está representada por una clase separada, necesitamos crear una clase de notificación personalizada que se utilizará para notificar a los usuarios. Usemos el siguiente comando artesanal para crear una clase de notificación personalizada: NewMessage.

Eso debería crear la clase app / Notifications / NewMessage.php, así que reemplacemos el contenido de ese archivo con los siguientes contenidos.

Como vamos a usar el canal de correo para enviar notificaciones a los usuarios, el método via se configurará en consecuencia. Este es el método que le permite configurar el tipo de canal de una notificación. 

Luego, está el método toMail que le permite configurar varios parámetros de correo electrónico. De hecho, el método toMail debe devolver la instancia de \ Illuminate \ Notifications \ Messages \ MailMessage, y esa clase proporciona métodos útiles que le permiten configurar parámetros de correo electrónico.

Entre varios métodos, el método line le permite agregar una sola línea en un mensaje. Por otro lado, está el método action que le permite agregar un botón de llamado a la acción en un mensaje.

De esta forma, podría formatear un mensaje que se enviará a los usuarios. Así es como se supone que debes configurar la clase de notificación mientras estás usando el canal de correo para enviar notificaciones. 

Al final, debes asegurarte de implementar los métodos necesarios de acuerdo con el tipo de canal configurado en el método via. Por ejemplo, si está utilizando el canal de base de datos que almacena notificaciones en una base de datos, no necesitas configurar el método toMail; en su lugar, debe implementar el método toArray, que formatea los datos que deben almacenarse en una base de datos.

Cómo Enviar Notificaciones

En la sección anterior, creamos una clase de notificación que está lista para enviar notificaciones. En esta sección, crearemos archivos que demuestren cómo podría enviar notificaciones utilizando la clase de notificación NewMessage. 

Vamos a crear un archivo de controlador en la app/Http/ Controllers/NotificationController.php con los siguientes contenidos.

Por supuesto, debe agregar una ruta asociada en el archivo routes/web.php.

Hay dos formas en que Laravel te permite enviar notificaciones: mediante el uso de la entidad notificable o la fachada Notification.

Si la clase de modelo de entidad utiliza el atributo Illuminate\Notifications\Notifiable, puedes llamar al método notify en ese modelo.  The App\User class implements the Notifiable trait and thus it becomes the notifiable entity. On the other hand, you could also use the Illuminate\Support\Facades\Notification Facade to send notifications to users.

Repasemos el método index del controlador.

En nuestro caso, notificaremos a los usuarios cuando reciban un mensaje nuevo. Así que hemos intentado imitar ese comportamiento en el método index en primer lugar.

A continuación, notificamos al usuario destinatario sobre un nuevo mensaje utilizando el método notify  en el objeto $toUser, ya que es la entidad de notificable obligatoria.

Puedes haber notado que también pasamos el objeto $ fromUser en el primer argumento del método __construct, ya que queremos incluir el nombre de usuario from en un mensaje.

Por otro lado, si deseas imitarlo utilizando la fachada Notification, es bastante fácil hacerlo con el siguiente fragmento.

Como puedes ver, hemos utilizado el método send de la fachada Notificacion para enviar una notificación a un usuario.

Continúe y abre la URL http: // su-laravel-site-domain / notify / index en su navegador. Si aún no has iniciado sesión, se te redirigirá a la pantalla de inicio de sesión. Una vez que hayas iniciado sesión, debes recibir un correo electrónico de notificación en la dirección de correo electrónico que se adjunta con el usuario 1

Es posible que te preguntes cómo el sistema de notificación detecta la dirección to cuando aún no la hemos configurado en ninguna parte.  En ese caso, el sistema de notificación intenta encontrar la propiedad email  en el objeto de declaración obligatoria. Y la clase de objeto App\User ya tiene esa propiedad ya que estamos usando el sistema de autenticación Laravel predeterminado.

Sin embargo, si deseas anular este comportamiento y deseas usar una propiedad diferente a la del correo electrónico, solo necesitas definir el siguiente método en tu clase de notificación.

Ahora, el sistema de notificación debe buscar la propiedad email_address en lugar de la propiedad email para buscar la dirección to.

Y así es como usar el sistema de notificación en Laravel. ¡Eso nos lleva al final de este artículo también!

Conclusión

Lo que hemos pasado hoy es una de las funciones útiles, aunque menos discutidas, en las notificaciones de Laravel. Te permite enviar notificaciones a usuarios a través de diferentes canales.

Después de una introducción rápida, implementamos un ejemplo del mundo real que demostró cómo enviar notificaciones por el canal de correo. De hecho, es realmente útil en el caso de enviar mensajes cortos sobre cambios de estado en su aplicación.

Para aquellos de ustedes que recién están empezando con Laravel o buscando ampliar su conocimiento, sitio o aplicación con extensiones, tenemos una variedad de cosas que pueden estudiar en Envato Market.

Si tienes alguna consulta o sugerencia, no dudes en publicarla utilizando los comentarios de abajo.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.