Vimos anteriormente cómo configurar un rasgo para una fácil reutilización del código. Ahora es el momento de agregar la capacidad de grabar favoritos como parte del feed de actividad de cualquier usuario. La buena noticia es que, dado que ya hicimos todo el trabajo para configurar la grabación de actividades, será fácil agregar esta nueva función. Además, dado que el código existente usa relaciones polimórficas, agregar nuevos y diferentes tipos de modelos a la actividad “simplemente funcionará” por así decirlo. Veamos cómo podemos incluir la creación de un favorito como parte del flujo de actividad del usuario ahora.


Activityify El modelo favorito

Agregar la capacidad de registrar la actividad a los favoritos es bastante fácil ahora. Abra el modelo favorito y simplemente agregue la use RecordsActivitylínea así.


Probar grabación favorita en la base de datos

Con el rasgo RecordsActivity implementado en nuestro modelo favorito, ahora se debe registrar en la base de datos agregar un favorito a una respuesta. Veamos. Podemos iniciar sesión como usuario Nikola Tesla y agregar un favorito a una respuesta creada por el usuario Tom.

¡Verificar la base de datos manualmente nos muestra que la grabación de un favorito en la tabla de actividades está funcionando!
nuevo favorito registrado en la actividad de la base de datos\


Agregar un nuevo parcial

Si recuerda, habíamos configurado archivos de vista parcial para cada actividad diferente que estamos grabando. En el directorio de la vista de actividades tenemos un archivo de created_reply.blade.php y created_thread.blade.php que son utilizados por el archivo principal show.blade.php para mostrar una actividad del feed en función del tipo de actividad. Entonces podemos ver que ya contabilizamos una actividad de respuesta, así como una nueva actividad de hilo. Ahora, vamos a necesitar un created_favorite.blade.php.
crear una nueva vista parcial en phpstorm


Agregar una nueva relación morphTo al modelo favorito

Ahora, vamos a necesitar una nueva relación con la que trabajar en este nuevo archivo de vista. Entonces, antes de comenzar a agregar el marcado al archivo created_favorite.blade.php recién creado, ocupémonos de agregar la relación morphTo () en el modelo favorito de esa manera.

Con esa relación morphTo () definida, ahora deberíamos poder ver la asociación entre un favorito y qué respuesta fue la favorita. Podemos intentarlo rápidamente en Tinker. Primero, buscaremos el favorito más reciente y, por supuesto, este será el favorito que acabamos de agregar arriba.

vagabundo @ homestead: ~ / Code / forumio $ php artisan tinker
Psy Shell v0.8.16 (PHP 7.1.2-3 + deb.sury.org ~ xenial + 1 â cli) por Justin Hileman
>>> $ fav = Aplicación \ Favorito :: último () -> primero ();
=> Aplicación \ Favorito {# 792
     id: 2,
     user_id: 53,
     favorito_id: 2,
     favorited_type: "Aplicación \ Responder",
     created_at: "2018-02-06 16:06:37",
     updated_at: "2018-02-06 16:06:37",
   }

Ahora que hemos guardado una instancia de Favorito en la variable $ fav, deberíamos poder usar la nueva relación que definimos para cargar los datos asociados.

>>> $ fav-> favorito;
=> Aplicación \ Responder {# 795
     id: 2,
     thread_id: 53,
     user_id: 52,
     body: "Estoy de acuerdo con este sentimiento",
     created_at: "2018-01-16 15:32:21",
     updated_at: "2018-01-16 15:32:21",
     propietario: Aplicación \ Usuario {# 801
       id: 52,
       nombre: "Tom",
       correo electrónico: "qwer@qwer.com",
       created_at: "2018-01-16 15:32:01",
       updated_at: "2018-01-16 15:32:01",
     },
     favoritos: Illuminate \ Database \ Eloquent \ Collection {# 804
       todos: [
         Aplicación \ Favorito {# 793
           id: 2,
           user_id: 53,
           favorito_id: 2,
           favorited_type: "Aplicación \ Responder",
           created_at: "2018-02-06 16:06:37",
           updated_at: "2018-02-06 16:06:37",
         },
       ],
     },
   }

Agregar un método path () a la clase Reply

Otra cosa que vamos a querer hacer es poder enlazar directamente a una respuesta. Hacer clic en un enlace a una respuesta no solo debe llevarlo a la página de hilo correcta con la que está asociada, sino que también debe desplazarse al lugar exacto en la página donde se encuentran las referencias favoritas. Entonces, podemos agregar este método al modelo de respuesta.

Entonces, lo que está sucediendo aquí es que, además de la ruta a la página del hilo, agregamos un hash concatenado con la identificación de la respuesta particular a la que nos gustaría vincular. Entonces, un href generado podría tener este formato http://forum.io/threads/quo/53#reply-2 . Ahora, en el archivo reply.blade.php, podemos agregar el hash al enlace para usar dinámicamente este marcado.


Agregar marcado a created_favorite.blade.php

Ok, ahora tenemos todo en su lugar, todo lo que tenemos que hacer es agregar el marcado correcto al archivo de vista parcial created_favorite.blade.php.

Visitar el feed de actividad de un usuario ahora también muestra los favoritos que el usuario haya hecho. Además, puede ver que hacemos clic en el enlace para el favorito de una respuesta, y se nos lleva directamente a la respuesta exacta en la página. ¡Muy hábil!
enlace a hash en la misma página


Hacer que los favoritos formen parte del resumen del feed de actividades

En este tutorial, aprendimos cómo agregar la acción de crear un favorito en una respuesta a la actividad de un usuario. Gracias al hecho de que habíamos creado ese rasgo conveniente que habíamos usado anteriormente, simplemente haciendo uso de este rasgo en el Modelo favorito, pudimos agregar rápidamente esta característica. Luego, todo lo que tuvimos que hacer fue actualizar algunas cosas en el lado del navegador para mostrar favoritos como parte del perfil de actividad de un usuario.