Ahora que tenemos la lógica para registrar la actividad del usuario en la base de datos, en este tutorial trabajaremos para obtener esa actividad del usuario de la base de datos y representarla en el navegador. Para comenzar, solo verificaremos que las nuevas actividades se estén registrando de hecho revisando manualmente la base de datos. Una vez que esté completo, podemos alterar la lógica de nuestro controlador para obtener la actividad del usuario de la base de datos. A continuación, comenzaremos a crear los archivos de vista para mostrar esta información en forma de un feed de actividad. Finalmente, trabajaremos un poco en la agrupación de diferentes actividades y también en la refactorización de componentes en la vista.


Prueba de la función de actividad del usuario desde el navegador

Todas las pruebas de apoyo parecen indicar que el registro de la actividad del usuario para el feed de actividad está funcionando muy bien. En realidad, no hemos intentado ingresar algunos hilos y respuestas nuevos a través del navegador para ver si esas actividades se registran. Si están registrados, entonces deberíamos ver esos registros de actividad en la tabla de actividades de la base de datos. Probemos eso ahora.

En primer lugar, en el servidor en vivo, tendremos que ejecutar manualmente las migraciones. ¿Por qué? Porque recuerde, nuestras pruebas hacen todo en la memoria a través de una base de datos SQLite. Cuando se ejecutan las pruebas, se ejecutan las migraciones, se configura un esquema de base de datos completamente nuevo, luego todo se revierte al finalizar. De todos modos, ejecutemos la migración.

vagrant @ homestead: ~ / Code / forumio $ php migrar artesanal
Migrando: 2018_01_30_164752_create_activities_table
Migrado: 2018_01_30_164752_create_activities_table

Genial: la tabla de actividades ya está en su lugar. Podemos agregar un hilo y ver si está registrado en la base de datos.
probar el feed de actividad del usuario

Al registrar la base de datos, se muestra que se creó la nueva actividad de subprocesos. ¡Frio!
nueva actividad de hilo registrada en la base de datos

Intentemos una cosa más. Necesitamos asegurarnos de que la actividad de respuesta también funcione.
probar la actividad de respuesta del usuario

¡Ah, ja! ¡Parece que ahora tenemos dos actividades en la base de datos! Parece estar funcionando.
nueva actividad de respuesta registrada en la base de datos


Obtención de datos de actividad para el perfil de usuario

El objetivo aquí es que cuando veamos una página de perfil de usuario, ahora veamos toda la actividad asociada con ese usuario. El método show () de ProfilesController es donde ocurre esto, así que sigamos adelante y comencemos a desarrollar la API para esto. Queremos hacer uso de un método activity () como este:

Esto significa que debemos definir la relación en el modelo de usuario. Esta es una relación hasMany que es bastante fácil de establecer.


Ver los datos sin procesar de la relación

Muy rápidamente, podemos agregar return $user->activity;al principio del método show () para ver qué se envía al navegador. Si visitamos el perfil de usuario de http://forum.io/profiles/NikolaTesla vemos que efectivamente se está mostrando su actividad. Hasta ahora tiene una actividad de hilo y dos actividades de respuesta.
relación de actividad trabajando


Actividad de carga ansiosa del tema

Es una buena idea hacer uso de la carga ansiosa cuando pueda, para que podamos agregar eso a la cadena de métodos de esta manera: return $user->activity()->with('subject')->get(); Ahora podemos ver que cada Actividad también incluye el Asunto de esa actividad. ¡Muy aseado!
carga ansiosa trabajando bien

Con estos pasos hasta ahora, aquí es donde se encuentra el método show () en ProfilesController.


Preparación del archivo de visualización profiles / show.blade.php

La obtención de los datos de actividad de la base de datos ya está completa. El código anterior nos muestra obteniendo esos datos de actividad y luego compartiendo los datos en el archivo de vistaNecesitaremos actualizar ese archivo de vista show.blade.php para procesar los datos ahora.


Polimorfismo lateral de vista básica

La naturaleza de las actividades es que puede haber varios tipos. Puede haber una actividad de conversación, una actividad de respuesta o quizás una actividad favorita. En un caso como este, podría configurar varias ramas if else en la vista para determinar cuál mostrar, o podría configurar algunos archivos de vista parcial y usar polimorfismo para configurar esto. Primero podemos configurar algunos archivos de vista parcial como este.

created_thread.blade.php
creando archivo de vista parcial

created_reply.blade.php
archivo de vista parcial anidado

Ahora, en la vista principal profiles / show.blade.php, podemos incluir diferentes archivos parciales así:

La variable de $ actividad-> tipo será diferente dependiendo de si se está pasando un hilo o una respuesta. De esta manera, el panel parcial correcto se carga sin necesidad de extensos bloques if else. ¡Con buena pinta!


Agregar marcado a las vistas parciales

Hicimos un buen trabajo al hacer de show.blade.php un archivo limpio y ordenado, ahora necesitamos agregar algunas marcas en los archivos parciales reales para mostrar cada tipo de actividad. Aquí hay un comienzo para los dos archivos de vista parcial.

created_thread.blade.php

created_reply.blade.php


Asegurándose de que las actividades más recientes estén en la parte superior de la página de perfil.

También queremos poner las actividades más actuales o más recientes en la parte superior de la página de perfil cuando un usuario visita. Eso es bastante fácil de hacer asegurándose de incluir el método más reciente () en el controlador.

¡Ahora, los inicios de nuestro feed de actividades están comenzando a tomar forma!
alimentación de actividad básica


Vinculación a actividades individuales

En el feed de actividad, deberíamos poder hacer clic en un enlace para llevarnos a la actividad específica que se muestra. Podemos hacer esto tanto para las respuestas como para los hilos.

En el modelo Responder, vamos a necesitar una nueva relación pertenece a. Una respuesta pertenece a un hilo, representado por este código en el modelo de respuesta.

Ahora podemos actualizar ambos archivos parciales una vez más para incluir enlaces a cada actividad individual.

created_thread.blade.php

created_reply.blade.php

¡Okay! El feed de actividad se ve bastante bien y ahora también tiene enlaces que regresan a cada hilo o respuesta.
feed de actividad con enlaces


Agrupar actividad por día

Ahora queremos configurar el feed de actividades para que todas las actividades de un día determinado se agrupen. Para esto, necesitaremos actualizar el método show () en ProfilesController para hacer uso de una cláusula groupBy () en la colección. Eso se ve así:

Además, ahora necesitamos actualizar la vista show.blade.php de la siguiente manera.

¡Ahora el feed de actividades se ve bastante bien! Cada día tiene un grupo de actividades que es realmente hábil.
feed de actividad agrupado por día


Refactorización a un componente

Conseguimos que la alimentación funcionara y estamos muy contentos con eso. Ahora, sin embargo, necesitamos hacer una refactorización para asegurarnos de que nuestros archivos de vista no sean un desastre. Para completar esto, primero crearemos un componente de actividad así.
ver componente

El marcado aparecerá así en el componente:

Los otros dos archivos de vista parcial ahora hacen uso de la directiva @component así. También tenga en cuenta el uso de la función de tragamonedas similar a cómo Vue usa las tragamonedas.

created_thread.blade.php

created_reply.blade.php

La página carga lo mismo, pero ahora tenemos un sistema mucho mejor para reunir nuestras vistas. Lo sé, lo sé, estás pensando ... ¿Pero por qué?

Bueno, piensa si terminas teniendo, digamos, otros tres o cuatro tipos de actividades. Ahora necesitará tres o cuatro archivos de vista parcial más para cada tipo. Ahora digamos que desea modificar ligeramente el marcado o cambiar el estilo en el feed de actividades. Adivina qué. Sí, así es, sin el componente activity.blade.php, necesitaría actualizar cinco o seis archivos de vista diferentes. ¡Qué asco! En cambio, con el único archivo activity.blade.php, puede realizar cambios en el marcado o el estilo allí una vez sin la necesidad de abrir y editar todos esos otros archivos parciales. Frio. ¡Súper genial de hecho!


Mostrar feed de actividad en el resumen del navegador

Excelente trabajo al configurar este feed de actividades para la aplicación. Fue un poco complicado, pero nada que no pudiéramos manejar. Además, también aprendimos sobre groupBy () en colecciones y uso de componentes en los archivos de vista. ¡Muy agradable!