Configuración del Método Show en Controladores PHP

Clase 14 de 23Curso de Desarrollo en Laravel con Test Driven Development

Contenido del curso

Proyecto

Resumen

Visualizar un registro individual es una operación fundamental en cualquier aplicación web, y hacerlo correctamente implica validar que solo el propietario del recurso pueda acceder a él. A continuación se explica paso a paso cómo configurar el método show en un controlador de Laravel, protegerlo con una política de acceso y verificar todo mediante pruebas automatizadas.

¿Cómo crear las pruebas para el método show?

El punto de partida es el archivo de testing donde ya se han configurado pruebas previas como update y update de póliza. La estructura de la prueba para show es similar, por lo que se puede tomar como base una prueba existente y adaptarla [01:00].

La lógica de la prueba sigue estos pasos:

  • Se crea un usuario y se inicia sesión con él.
  • Se crea un repositorio asociado a ese usuario.
  • Se realiza una petición GET a la ruta del repositorio individual.
  • Se verifica que el status HTTP sea 200 (ok).

No se necesita enviar data adicional, ya que solo se consulta información. Opcionalmente se puede verificar que la respuesta contenga el ID, la URL o la descripción del repositorio, tal como se hizo previamente en la prueba del método index [02:30].

Para la prueba de la política de acceso (show policy), se crea un repositorio con un usuario distinto al autenticado. Al intentar acceder con GET, se espera recibir un error que confirme que el acceso está denegado [03:10].

¿Cómo configurar el controlador para mostrar un registro individual?

Dentro del archivo RepositorioController, el método show se ubica justo después del index. Su estructura se inspira en el método de eliminación, ya que ambos utilizan la política de acceso [04:00].

El método recibe dos parámetros: el request y el repositorio que se desea visualizar. Internamente realiza lo siguiente:

  • Ejecuta la política de acceso para verificar que el usuario autenticado sea el propietario del repositorio.
  • Retorna una vista llamada repositorios.show, pasándole la variable del repositorio.

php public function show(Request $request, Repositorio $repositorio) { $this->authorize('pass', $repositorio);

return view('repositorios.show', compact('repositorio'));

}

El método authorize garantiza que solo el dueño del recurso pueda visualizarlo. Si la validación falla, Laravel devuelve automáticamente un error de autorización [04:45].

¿Cómo crear la vista show en Blade?

La vista se crea en resources/views/repositorios/show.blade.php. A diferencia del index, que muestra una tabla con múltiples registros, show presenta un registro individual [05:30].

La estructura básica incluye:

  • Un H1 que muestra la URL del repositorio.
  • Un div que muestra la descripción.

html

<h1>{{ $repositorio->url }}</h1> <div>{{ $repositorio->descripcion }}</div>

Además, en la vista del index se agrega un enlace para acceder al detalle de cada repositorio [06:20]:

html <a href="{{ route('repositorios.show', $repositorio) }}">Ver</a>

Este enlace utiliza la función route apuntando a repositorios.show y pasa la variable del repositorio individual. Se emplea &nbsp; para agregar un espacio visual y se ajusta el diseño para que ocupe tres columnas dentro del layout [06:50].

¿Cómo verificar que todo funciona correctamente?

Al ejecutar php artisan test en la terminal, todas las pruebas previas pasan exitosamente, y tanto el show como el show policy se validan sin errores [07:10]. Esto confirma que:

  • El método show retorna el registro correctamente.
  • La política de acceso impide que usuarios no autorizados visualicen repositorios ajenos.
  • La vista muestra la información esperada.

La clave de esta implementación es que el código queda completamente testeado, lo que permite copiar, adaptar y reutilizar patrones con confianza. La política de validación, la política de acceso y la visualización de datos en una vista Blade son piezas que ya se dominan de clases anteriores y se combinan aquí de forma natural.

Ahora es tu turno de implementar esta configuración y comprobar los resultados en tu proyecto. Si tienes dudas sobre la política de acceso o la estructura de la vista, comparte tu experiencia en los comentarios.