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 le permite enviar notificaciones a los usuarios a través de diferentes canales. Hoy, discutiremos cómo puede enviar notificaciones a través del canal de correo..
Durante el desarrollo de la aplicación, a menudo es necesario notificar a los usuarios sobre diferentes cambios de estado. Podría ser enviar notificaciones por correo electrónico cuando se cambia el estado del pedido o enviar un SMS sobre su actividad de inicio de sesión por motivos de seguridad. En particular, estamos hablando de mensajes que son breves y simplemente proporcionan información sobre los cambios de estado.
Laravel ya proporciona una función incorporada que nos ayuda a lograr algo similar: notificaciones. De hecho, facilita el envío de mensajes de notificación a los usuarios y una experiencia divertida.!
La belleza de este enfoque es que le permite elegir entre diferentes canales a los que se enviarán notificaciones. Vayamos rápidamente a través de los diferentes canales de notificación soportados por Laravel..
Entre los diferentes canales de notificación, usaremos el canal de correo en nuestro caso de uso de ejemplo que vamos a desarrollar en el transcurso 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 reciban 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!
Como comentamos anteriormente, vamos a configurar una aplicación que permita a los usuarios de nuestra aplicación enviar mensajes entre sí. Por otro lado, notificaremos a los usuarios cuando reciban un nuevo mensaje 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, vamos a crear el Mensaje
Modelo que contiene los mensajes enviados por los usuarios entre sí..
$ php artesanal hace: modelo de mensaje --migración
También necesitamos agregar algunos campos como a
, desde
y mensaje
al mensajes
mesa. Así que vamos a cambiar el archivo de migración antes de ejecutar el emigrar
mando.
incrementos ('id'); $ table-> integer ('from', FALSE, TRUE); $ table-> integer ('to', FALSE, TRUE); $ tabla-> texto ('mensaje'); $ table-> timestamps (); ); / ** * Revertir las migraciones. * * @return void * / public function down () Schema :: dropIfExists ('messages');
Ahora, ejecutemos el comando migrar que crea la tabla de mensajes en la base de datos.
$ php artesano migra
Eso debería crear el mensajes
tabla en la base de datos.
Además, asegúrese 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 forma inmediata. Si no está 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, debemos crear una clase de notificación personalizada que se usará para notificar a los usuarios. Usemos el siguiente comando de Artisan para crear una clase de notificación personalizada: NewMessage.
$ php artisan make: notificación NewMessage
Eso debería crear el aplicación / Notificaciones / NewMessage.php
clase, así que vamos a reemplazar el contenido de ese archivo con el siguiente contenido.
fromUser = $ usuario; / ** * Obtener los canales de entrega de la notificación. * * @param mixed $ notifiable * @return array * / public function via ($ notifiable) return ['mail']; / ** * Obtener la representación de correo de la notificación. * * @param mixed $ notifiable * @return \ Illuminate \ Notifications \ Messages \ MailMessage * / public function toMail ($ notifiable) $ subject = sprintf ('% s: ¡Ha recibido un nuevo mensaje de% s!' , config ('app.name'), $ this-> fromUser-> name); $ greeting = sprintf ('Hello% s!', $ notifiable-> name); return (nuevo MailMessage) -> asunto ($ asunto) -> saludo ($ saludo) -> saludo ('Atentamente') -> línea ('La introducción a la notificación.') -> acción ('Acción de notificación', url ('/')) -> línea ('¡Gracias por usar nuestra aplicación!'); / ** * Obtener la representación de matriz de la notificación. * * @param mixed $ notifiable * @return array * / public function toArray ($ notifiable) return [//];
Como vamos a utilizar el canal de correo para enviar notificaciones a los usuarios, el vía
El método se configura en consecuencia. Este es el método que le permite configurar el tipo de canal de una notificación..
A continuación, está la enviar por correo
Método que le permite configurar varios parámetros de correo electrónico. De hecho, la enviar por correo
método 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 los diversos métodos, el línea
método le permite agregar una sola línea en un mensaje. Por otro lado, está la acción
Método que le permite agregar un botón de llamada a la acción en un mensaje.
De esta manera, 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 usas el canal de correo para enviar notificaciones.
Al final, debe asegurarse de implementar los métodos necesarios de acuerdo con el tipo de canal configurado en el vía
método. Por ejemplo, si está utilizando el canal de base de datos que almacena las notificaciones en una base de datos, no necesita configurar el enviar por correo
método; en su lugar, debe implementar el toArray
Método, que formatea los datos que deben almacenarse en una base de datos..
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 el Nuevo mensaje
clase de notificación.
Vamos a crear un archivo controlador en app / Http / Controllers / NotificationController.php
con los siguientes contenidos.
middleware ('auth'); índice de función pública () // el usuario 2 envía un mensaje al usuario 1 $ mensaje = nuevo Mensaje; $ mensaje-> setAttribute ('desde', 2); $ mensaje-> setAttribute ('a', 1); $ mensaje-> setAttribute ('mensaje', 'Mensaje de demostración del usuario 2 al usuario 1.'); $ mensaje-> guardar (); $ fromUser = User :: find (2); $ toUser = User :: find (1); // enviar notificación usando el modelo de "usuario", cuando el usuario recibe el nuevo mensaje $ toUser-> notificar (nuevo NewMessage ($ fromUser)); // enviar notificación usando la fachada de "Notificación" Notification :: send ($ toUser, new NewMessage ($ fromUser));
Por supuesto, necesita agregar una ruta asociada en el rutas / web.php
expediente.
Route :: get ('notify / index', 'NotificationController @ index');
Hay dos formas en que Laravel le permite enviar notificaciones: utilizando la entidad notificable o la fachada de Notificación.
Si la clase modelo de entidad utiliza Iluminar \ Notificaciones \ Notificables
rasgo, entonces podrias llamar al notificar
Método en ese modelo. los Aplicación \ usuario
clase implementa el De declaración obligatoria
Rasgo y por lo tanto se convierte en la entidad notificable. Por otro lado, también puedes usar el Iluminar \ Soporte \ Fachadas \ Notificación
Fachada para enviar notificaciones a los usuarios..
Vayamos a través de la índice
método del controlador.
En nuestro caso, notificaremos a los usuarios cuando reciban un nuevo mensaje. Así que hemos tratado de imitar ese comportamiento en el índice
método en primer lugar.
A continuación, hemos notificado al usuario destinatario acerca de un nuevo mensaje utilizando el notificar
método en el $ toUser
objeto, ya que es el de declaración obligatoria entidad.
$ toUser-> notificar (nuevo NewMessage ($ fromUser));
Es posible que hayas notado que también pasamos el $ fromUser
objeto en el primer argumento de la __construir
Método, ya que queremos incluir el desde nombre de usuario en un mensaje.
Por otro lado, si quieres imitarlo utilizando el Notificación
fachada, es bastante fácil hacerlo usando el siguiente fragmento de código.
Notificación :: enviar ($ toUser, nuevo NewMessage ($ fromUser));
Como puedes ver, hemos usado el enviar
Método de la fachada de notificación para enviar una notificación a un usuario..
Continúe y abra la URL http: // su-laravel-site-domain / notification / index en su navegador. Si aún no ha iniciado sesión, será redirigido a la pantalla de inicio de sesión. Una vez que haya iniciado sesión, debe recibir un correo electrónico de notificación en la dirección de correo electrónico que se adjunta con el usuario 1
.
Quizás se pregunte cómo el sistema de notificación detecta la a
Dirección cuando aún no lo hemos configurado en ninguna parte. En ese caso, el sistema de notificación intenta encontrar el correo electrónico
Propiedad en el objeto de declaración obligatoria. Y el Aplicación \ usuario
La clase de objeto ya tiene esa propiedad, ya que estamos usando el sistema de autenticación Laravel predeterminado..
Sin embargo, si desea anular este comportamiento y desea utilizar una propiedad diferente a la del correo electrónico, solo necesita definir el siguiente método en su clase de notificación.
función pública routeNotificationForMail () return $ this-> email_address;
Ahora, el sistema de notificación debe buscar el dirección de correo electrónico
propiedad en lugar de la correo electrónico
propiedad para buscar el a
dirección.
Y así es como usar el sistema de notificación en Laravel. Eso nos lleva al final de este artículo también.!
Lo que hemos pasado hoy es una de las funciones útiles, aunque menos comentadas, en las notificaciones de Laravel. Te permite enviar notificaciones a los 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 a través del 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 ya están comenzando con Laravel o que desean ampliar sus conocimientos, sitio o aplicación con extensiones, tenemos una variedad de cosas que puede estudiar en Envato Market..
Si tiene alguna consulta o sugerencia, no dude en publicarlas utilizando el siguiente feed!