Post Top Ad

Your Ad Spot

jueves, 30 de julio de 2020

Tutorial del sistema de suscripción de Laravel

Tutorial del sistema de suscripción de Laravel

Muchos sitios web populares le permiten suscribirse a un tema o tema en particular. , puede recibir notificaciones por correo electrónico o en el sitio web. 


Un hilo puede ser suscrito

Entonces, ¿qué es lo primero que podemos hacer? 

  • Dado que hay un hilo
  • Dado un usuario autenticado
  • Cuando ese usuario se suscribe al hilo
  • Entonces el usuario debería poder recuperar todos los hilos suscritos

La ejecución de la prueba nos muestra lo que debemos hacer a continuación, que es crear un nuevo método subscribe ().

vagrant @ homestead: ~ / Code / forumio $ phpunit --filter test_a_thread_can_be_subscriptions_to
PHPUnit 6.5.5 por Sebastian Bergmann y colaboradores.

E 1/1 (100%)

Tiempo: 1.27 segundos, Memoria: 8.00MB

Hubo 1 error:

1) Pruebas \ Unidad \ ThreadTest :: test_a_thread_can_be_subscriptions_to
BadMethodCallException: llamada al método indefinido Illuminate \ Database \ Query \ Builder :: subscribe ()

Podemos crear este nuevo método subscribe () en el modelo Thread.php así. 

vagrant @ homestead: ~ / Code / forumio $ php artesanal make: model ThreadSubscription -m
Modelo creado con éxito.
Migración creada: 2018_02_20_192313_create_thread_subscriptions_table

Los campos que necesitaremos en nuestra nueva tabla de base de datos están definidos por la migración que acabamos de crear de la siguiente manera:

También agregaremos estos dos nuevos métodos a nuestra clase de modelo Thread.php.

Finalmente, también agregaremos una relación básica a la clase ThreadSubscription. 

Ahora estamos obteniendo un estado de aprobación en esta primera prueba.

vagrant @ homestead: ~ / Code / forumio $ phpunit --filter test_a_thread_can_be_subscriptions_to
PHPUnit 6.5.5 por Sebastian Bergmann y colaboradores.

. 

Tiempo: 831 ms, Memoria: 8.00MB

OK (1 prueba, 1 afirmación)

Un hilo puede ser dado de baja

Por supuesto, un usuario también podrá darse de baja de cualquier hilo en particular al que se haya suscrito. 

  • Dado que hay un hilo
  • Dado que un usuario está suscrito a ese hilo
  • Cuando se activa la función de cancelación de suscripción
  • Entonces el hilo no debe tener suscripciones

Aquí está el código de prueba real para esta función.

Para pasar esta prueba, necesitaremos algunas cosas. 

Con esa simple adición, la prueba pasa.

vagrant @ homestead: ~ / Code / forumio $ phpunit --filter test_a_thread_can_be_unsubscriptions_from
PHPUnit 6.5.5 por Sebastian Bergmann y colaboradores.

. 

Tiempo: 840 ms, Memoria: 8.00MB

OK (1 prueba, 1 afirmación)

Ahora nuestro entorno de prueba ejecutará migraciones automáticamente en cada ejecución de prueba, pero también ejecutemos las migraciones manualmente para que podamos probarnos en el navegador y ver que la función de suscripción funciona mientras avanzamos.

vagrant @ homestead: ~ / Code / forumio $ php artisan migrate
Migrando: 2018_02_20_192313_create_thread_subscriptions_table
Migrado: 2018_02_20_192313_create_thread_subscriptions_table

Todavía no tenemos el front end para probar la suscripción a un hilo, pero podemos tomar esto para una ejecución de prueba en tinker. 

>>> $ thread = App \ Thread :: latest () -> first ();
=> Aplicación \ Hilo {# 814
     id: 59,
     user_id: 53,
     channel_id: 1,
     título: "El clima es hermoso afuera",
     cuerpo: "La primavera está en el aire y las temperaturas exteriores se están calentando. ¡Disfruta del hermoso día!",
     created_at: "2018-02-20 18:06:12",
     updated_at: "2018-02-20 18:06:12",
     replies_count: 3,
     creador: Aplicación \ Usuario {# 822
       id: 53
       nombre: "Nikola Tesla",
       created_at: "2018-01-23 18:07:43",
       updated_at: "2018-01-23 18:07:43",
     },
     canal: Aplicación \ Canal {# 812
       id: 1
       nombre: "repellat",
       babosa: "repellat",
       created_at: "2017-12-21 16:32:19",
       updated_at: "2017-12-21 16:32:19",
     },
   }

Ahora, suscribiremos un usuario a ese hilo. 

>>> $ thread-> subscribe (52);
=> Aplicación \ Hilo {# 814
     id: 59,
     user_id: 53,
     channel_id: 1,
     título: "El clima es hermoso afuera",
     cuerpo: "La primavera está en el aire y las temperaturas exteriores se están calentando. ¡Disfruta del hermoso día!",
     created_at: "2018-02-20 18:06:12",
     updated_at: "2018-02-20 18:06:12",
     replies_count: 3,
     creador: Aplicación \ Usuario {# 822
       id: 53
       nombre: "Nikola Tesla",
       created_at: "2018-01-23 18:07:43",
       updated_at: "2018-01-23 18:07:43",
     },
     canal: Aplicación \ Canal {# 812
       id: 1
       nombre: "repellat",
       babosa: "repellat",
       created_at: "2017-12-21 16:32:19",
       updated_at: "2017-12-21 16:32:19",
     },
   }

Podemos registrar la nueva tabla de base de datos que habíamos creado y, efectivamente, ¡vemos una nueva suscripción allí!
nueva suscripción en la base de datos

También deberíamos poder darnos de baja con la misma facilidad. 

>>> $ thread-> cancelar suscripción (52);
=> nulo

Ahora, cuando registramos la base de datos, esa suscripción que vimos hace solo un minuto ya no existe. 
el usuario ahora está dado de baja


Implementación de una prueba de características de nivel superior

Comenzamos en el nivel de Unidad para obtener la funcionalidad más básica configurada para suscribirse y cancelar la suscripción a un hilo. 
suscribirse a la nueva prueba de función de hilo

Desarrollar la primera prueba en el nivel de Función se ve así.

Vamos a necesitar una gran cantidad de rutas para admitir esta nueva función. 


Una nueva clase ThreadSubscriptionsController

Configuramos algunas rutas que hacen referencia a la clase ThreadSubscriptionsController, pero todavía no tenemos esa clase. 

vagrant @ homestead: ~ / Code / forumio $ php artisan make: controller ThreadSubscriptionsController
Controlador creado con éxito.

También agregaremos un pequeño método happy store () en nuestro nuevo controlador.

La ejecución de nuestra prueba muestra que hemos hecho lo suficiente para aprobar esta prueba.

vagrant @ homestead: ~ / Code / forumio $ phpunit --filter test_a_user_can_subscribe_to_threads
PHPUnit 6.5.5 por Sebastian Bergmann y colaboradores.

. 

Tiempo: 1.3 segundos, Memoria: 10.00MB

OK (1 prueba, 1 afirmación)

Agregar un botón Suscribir a la interfaz de usuario

Los conceptos básicos del back-end ahora se desarrollan y, según las pruebas que hemos creado, parecen estar funcionando. hizo el botón 
nuevo componente SubscribeButton vue

Completaremos SubscribeButton.vue así.

En Thread.vue necesitamos hacer referencia al nuevo componente en un par de puntos.

Finalmente, mostraremos el nuevo botón en nuestro archivo threads / show.blade.php como este.

Voila!
ejemplo de componente de suscripción

En realidad, se está produciendo una buena cantidad de comportamiento en los fragmentos anteriores y sigue los mismos conceptos que hemos estado cubriendo con respecto al trabajo con componentes Vue. 


botón clic suscripción añadida


¿Está suscrito el hilo?

Deberíamos agregar un captador de atributos personalizado al modelo Thread para decirnos si un hilo está suscrito actualmente o no. 

También configuraríamos la propiedad $ appends así.

Si simplemente devolvemos los datos con formato JSON del método show () en ThreadsController, vemos que tenemos acceso a esa información necesaria.
getter personalizado agrega propiedad en laravel

Estos son los datos que se envían cuando hacemos referencia

en hilos / show.blade.php.


Eliminar una suscripción

Todo funciona para hacer clic en el botón y ver una nueva suscripción en la base de datos. 

Ahora, al hacer clic en el botón, se agrega una nueva suscripción. 
agregar o quitar suscripción


Resumen del tutorial del sistema de suscripción Laravel

Este tutorial cubrió los conceptos básicos para configurar el código necesario para un sistema de suscripción para los usuarios de la aplicación. 

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas