Header Ads Widget

Ticker

6/recent/ticker-posts

Aplicación de métodos RESTful al recurso de reseñas

 Aplicación de métodos RESTful al recurso de reseñas


Cuando hablamos de un recurso con respecto al enfoque RESTful para el desarrollo, estamos haciendo uso de descripciones generales genéricas de cómo administrar una colección de elementos similares. Hasta ahora nos hemos centrado realmente en los juegos como nuestro principal recurso en nuestra pequeña aplicación. Si queremos mostrar todos los juegos, usamos el método index () . Si queremos mostrar un formulario para insertar un nuevo juego en el sistema, usamos el método create () . Para almacenar el envío de un juego, utilizamos el método store () . Finalmente, para mostrar un recurso en particular, o juego en este caso, usamos el método show () . Hasta el momento, no damos el mismo tratamiento al recurso Reseñas en nuestra aplicación. Desarrollemos eso en este tutorial.


Listado de todas las reseñas con index ()

Podemos comenzar con nuestro archivo de rutas. Si queremos visitar una ruta en particular para mostrar todas las reseñas del juego en el sistema, podemos usar la siguiente ruta.


rutas / web.php

Con nuestra ruta en su lugar, ahora podemos definir el método index () en ReviewsController como vemos aquí. Ahora puede que se pregunte por qué no usamos simplemente $ reviews = Review :: all (); para ver todas las reseñas. Esto se debe a que sería bueno mostrar las reseñas agregadas más recientemente. Para hacer esto, podemos usar $ reviews = Review :: latest () -> get (); como vemos.


aplicación / Http / Controllers / ReviewsController.php

En el fragmento de arriba, parece que estamos cargando un archivo index.blade.php desde el directorio de revisiones. Todavía no tenemos esto, así que creemos ese directorio y archivo ahora. ¿Ves el patrón aquí? Estamos viendo Reseñas como su propio recurso, por lo que podemos dedicarle un directorio de vistas, luego podemos seguir la convención de agregar index.blade.php, create.blade.php y show.blade.php, al igual que nosotros podría con cualquier otro recurso.


recursos / vistas / reseñas / index.blade.php

Hay algunas cosas a tener en cuenta aquí. Podemos ver que tomamos las reseñas y las recorremos en un bucle foreach, tal como lo hicimos cuando enumeramos todos los juegos. Dado que ya hemos establecido nuestras elocuentes relaciones, podemos usar $ review-> user-> name para mostrar el usuario que envió una reseña. Nos gustaría vincularnos a una reseña en particular, así que lo hacemos configurando el valor del atributo href en / reviews / {{$ review-> id} . Configuraremos las rutas, la función del controlador y el archivo de vista para manejar esto en un momento. También podemos vincular al juego en el que se dejó una revisión usando el valor href de / games / {{$ review-> game-> id}} y obteniendo el título del juego como texto de anclaje usando $ review-> game-> título . Finalmente, hacemos uso de eso conveniente instancia de Carbon para mostrar una forma legible por humanos de cuánto tiempo hace que se envió la revisión con $ review-> created_at-> diffForHumans () .

enumerar todos los recursos de revisión con el método de índice


Agregar un enlace de Reseñas de lista a la navegación

En la captura de pantalla anterior, podemos ver que ahora enumeramos todas las reseñas en la base de datos. Cada reseña muestra el usuario que la envió, el juego con el que está asociado y un enlace a la reseña en sí. También podemos ver un enlace en el área de navegación similar a cómo tenemos un enlace para ver todos los juegos. Así es como agregamos ese enlace.


recursos / vistas / parciales / navbar.blade.php


Mostrar un formulario para agregar una reseña de un juego con create ()

El siguiente método RESTful que queremos implementar es el método create () . De hecho, ya tenemos una forma de agregar reseñas a los juegos, ya que incluimos un formulario directamente en la vista resources / views / games / show.blade.php del recurso de juegos. Vamos a eliminar ese formulario y le daremos a las reseñas de juegos su propia ruta dedicada para mostrar un formulario. De esta manera, podemos proteger esa ruta de usuarios no autenticados cuando agregamos middleware a nuestra aplicación. Primero, observamos la ruta que necesitamos para mostrar un formulario para crear una revisión.


rutas / web.php

Ahora compruébalo. Con el recurso de Juegos, todo lo que necesitábamos era una ruta de '/ games / create'. Entonces, ¿por qué tenemos ese comodín en el recurso Reseñas como este '/ reviews / {game} / create'? Esto se debe a que cuando mostramos un formulario, vamos a necesitar mostrarlo para un juego específico. Podemos usar Route Model Binding para buscar el juego para el que queremos dejar una revisión y mostrar el formulario como tal. Con esto en mente, ahora podemos configurar el método create () en nuestro ReviewsController y observar cómo usamos nuevamente Route Model Binding, del que me he enamorado.


aplicación / Http / Controllers / ReviewsController.php

Agreguemos ahora una vista para mostrar un formulario. Dado que tenemos una instancia del juego en cuestión, podemos mostrar en la forma exactamente para qué juego estamos dejando una revisión. Esto significa que podemos eliminar el formulario de resources / views / games / show.blade.php y reemplazarlo con un enlace para crear una revisión para el formulario dado de esta manera: <a href="/reviews/{{$game-> id}} / create ”> ¡Agregar una reseña! </a>


recursos / vistas / reseñas / create.blade.php

Ahora tenemos una ruta y una vista dedicadas para generar un formulario para enviar una revisión del juego.
ruta y formulario dedicados para la creación de reseñas


Actualización del método store () en ReviewsController.php

Principalmente, el método store () puede permanecer igual que antes. Sin embargo, hacemos una pequeña actualización. En la última iteración, usamos return back (); para simplemente redirigir al usuario a la página en la que envió la reseña. En este caso, Whey estaba en la vista show.blade.php del recurso de Juegos. En otras palabras, estaban viendo un juego específico en el momento de enviar una reseña. Al redirigirlos, ven su reseña inmediatamente en esa página. Ahora, tenemos un formulario de envío de reseñas que se encuentra en una ruta completamente separada. Esto significa que lo redireccionaríamos de nuevo a un formulario vacío para enviar una revisión al enviar nuestra revisión. Sería mejor si pudiéramos redirigir a la página de juegos específicos para ese juego del que acabamos de dejar una reseña. Podemos hacer esto conreturn redirect () -> to ('/ games /'. request () -> route () -> juego-> id);


aplicación / Http / Controllers / ReviewsController.php

Deberíamos estar bien ahora. Deberíamos poder visitar un juego específico, hacer clic en el enlace Agregar una reseña, completar nuestra reseña, enviarla y luego ser redirigidos de nuevo a ese juego para que podamos ver la reseña del juego que acabamos de enviar.
enviar una nueva reseña del juego con redirección


Personalizar el orden de clasificación de una relación elocuente

Podemos ver que enviar reseñas de un juego específico ahora está funcionando. También tenga en cuenta que anteriormente, nuestras nuevas revisiones aparecían en último lugar en la lista de revisiones. En la imagen de arriba, mostramos que las nuevas reseñas ahora se muestran primero en la lista. Cómo hacemos esto? Hicimos esto extendiendo la relación hasMany () en el modelo Game. Así es como lo hacemos.


aplicación / Game.php


Visualización de una única reseña de juego con show ()

El paso final en nuestro viaje de aplicar el tratamiento RESTful a nuestras reseñas de juegos es configurar una ruta, un método de controlador y un archivo de visualización para mostrar reseñas individuales de la base de datos. De esta manera, así como podemos visitar una ruta específica para ver los detalles de un juego específico, ahora también podremos visitar una ruta específica para ver una reseña específica.


web / routes.php


aplicación / Http / Controllers / ReviewsController.php


recursos / vistas / reseñas / show.blade.php


Actualizar los recursos / vistas / juegos / show.blade.php

También querremos mostrar un enlace para cada revisión cuando visitemos una página de juego específica. Cada revisión tendrá algo así como publicado hace 2 horas por el usuario Mario asociado. Aquí simplemente envolvemos esa prueba con una etiqueta de anclaje para vincularla a la revisión específica en cuestión.


recursos / vistas / juegos / show.blade.php

navegando a reseñas específicas de juegos


Aplicación de métodos RESTful al resumen de recursos de revisiones

En este tutorial le dimos el tratamiento RESTful a nuestro recurso Reviews. Ahora podemos ver las reseñas de juegos como ciudadanos de primera clase en nuestra pequeña aplicación, al igual que los propios Juegos. Como sabemos, al adherirnos al enfoque RESTful, podemos elegir entre los métodos de index (), crear (), almacenar (), mostrar (), editar (), actualizar () y destruir () para hacer nuestro trabajo para nosotros.

Publicar un comentario

0 Comentarios