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 RecordsActivity
lí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!
\
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.
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!
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.
0 Comentarios