Contenido del curso
Diseño de un foro
- 5

Flujo completo de Laravel: ruta, controlador, modelo y vista
07:55 min - 6

Diseño home en Laravel con Tailwind CSS
09:48 min - 7

Desarrollo de página de detalles con rutas dinámicas en Laravel
07:43 min - 8

Creación de componentes Blade para plantillas reutilizables en Laravel
07:11 min - 9

Pregunta con respuestas dinámicas en Laravel
05:19 min - 10

Relaciones polimorfas para comentarios en Laravel
06:33 min
Livewire
Optimización
CRUD
Detalles finales
Cómo crear el index del foro en Laravel
Resumen
Crear el index del foro en Laravel es lo que abre la puerta a tu comunidad: aquí enlazas el botón principal con una vista que lista preguntas, las pagina y las conecta con su usuario y categoría. Si vienes trabajando un proyecto con foro y blog, esta pieza es la que finalmente une todo.
¿Cómo enlazar el botón del foro con su ruta?
El primer paso es darle vida al botón que ya existe en el menú. Para eso vas a recursos/vistas y buscas el componente del menú de navegación donde aparece el foro.
Dentro del componente, asignas el nombre de ruta correspondiente. En el ejemplo se llama preguntas.index, pensado para mostrar el listado principal del foro. Al guardar, el navegador te marcará un error porque la ruta aún no existe, y eso es justo lo que quieres ver para confirmar el siguiente paso.
¿Por qué Laravel falla al guardar la ruta? Porque el nombre
preguntas.indexaún no está registrado enweb.php. Laravel lanza el error para avisarte que la referencia existe en la vista pero no en el archivo de rutas.
La misma lógica aplica para el blog: necesitas replicar el proceso para que ambas secciones funcionen como entradas independientes a tu comunidad.
¿Cómo programar el método index en el controlador?
Dentro del controlador de preguntas creas un método nuevo llamado index. Aquí defines la consulta que alimenta la vista del foro.
La consulta tiene tres movimientos clave que conviene entender bien:
- Traer las preguntas junto con su usuario y su categoría, usando eager loading para evitar consultas extra.
- Ordenarlas en forma descendente, para que las más recientes aparezcan primero.
- Aplicar paginación con 24 elementos por página.
Al final, el método retorna una vista pasando esa colección paginada. Borras la generación automática que Laravel deja por defecto y dejas tu lógica limpia: consulta, orden, paginación y retorno [00:32].
¿Qué hace el eager loading con usuario y categoría?
Cargar la pregunta con su user y category desde la consulta evita el problema clásico de N+1. En lugar de ejecutar una consulta por cada pregunta para conocer su autor o categoría, Laravel resuelve todo en pocas consultas.
En el resultado final solo aparecen cinco consultas en total, una de ellas adicional por el cálculo de la paginación. Eso es eficiencia real.
¿Cómo registrar la ruta y crear la vista del foro?
Con el método listo, abres routes/web.php y registras la ruta apuntando al controlador y al método index. Ahí defines tres cosas: el nombre de ruta que usarás desde las vistas, el controlador que responde y la URL que verá el usuario en la barra de direcciones [01:30].
Al recargar el navegador, Laravel te pedirá ahora la vista. Vas a resources/views, creas (o ubicas) la carpeta del foro y dentro generas el archivo index.blade.php.
¿Qué estructura mínima necesita la vista index del foro? Un componente layout que envuelva el contenido, un
@foreachque recorra las preguntas y una llamada al métodolinks()para renderizar la paginación.
Pegas el diseño base que ya tenías preparado, copias el componente desde la vista show para mantener consistencia visual, y lo organizas con su apertura al inicio y cierre al final.
¿Cómo hacer dinámico el listado de preguntas?
Envuelves el bloque del diseño en un @foreach que itere sobre la colección $preguntas. Con eso, en lugar de un solo elemento estático, ves los 24 registros configurados en la paginación.
Dentro de cada iteración personalizas tres datos clave:
- El título de la pregunta, enlazado a la ruta
showpara que cada elemento lleve a su detalle. - El nombre del usuario que la creó, accediendo a la relación cargada.
- El nombre de la categoría asociada y la fecha de creación.
Para la paginación, imprimes {{ $preguntas->links() }} al final del listado. Laravel se encarga del resto: botones de página anterior, siguiente y números, todo automático.
¿Qué deberías replicar en tu blog?
La práctica no termina en el foro. El mismo flujo (ruta nombrada, método index en el controlador con consulta, orden y paginación, vista Blade con @foreach y links()) lo necesitas para el blog.
Replicarlo te deja con dos secciones funcionales que ya pueden conectarse al resto del proyecto: autenticación, detalle de cada pregunta, categorías y relaciones entre modelos. Desde aquí todo empieza a tomar forma de aplicación real.
¿Ya intentaste aplicar este mismo patrón en tu blog? Cuéntame en los comentarios qué parte te resultó más retadora.