Configuración de Rutas y Controladores en Laravel para Listado de Posts
Clase 19 de 37 • Curso de Introducción a Laravel 6
Resumen
¿Cómo configurar la parte visual de tu sitio web?
Configurar la parte visual de un sitio web es fundamental para garantizar que los usuarios tengan una experiencia atractiva y funcional. Vamos a trabajar en la visualización de una lista de publicaciones y de una publicación en particular. El primer paso es modificar las rutas dentro de nuestra configuración web para reflejar correctamente la estructura deseada.
¿Cómo modificar y personalizar las rutas?
Modificar y personalizar las rutas es esencial para dirigir a los usuarios a las vistas correctas dentro de un sitio web. Vamos a proceder a hacer un par de ajustes:
-
Personaliza la ruta de inicio:
- Cambia la ruta raíz para que apunte a
postsController@index
, y asegúrate de utilizar nombres en plural para las listas.
- Cambia la ruta raíz para que apunte a
-
Configura rutas para publicaciones individuales:
- Usa un parámetro dinámico en la ruta, como
Blog/{post}
, y dirígelo al métodopost
en singular.
- Usa un parámetro dinámico en la ruta, como
Route::get('posts/', [PostsController::class, 'index']);
Route::get('blog/{post}', [PostsController::class, 'show']);
¿Cómo crear y configurar el controlador?
El controlador es donde se maneja la lógica principal para tus rutas. Aquí es donde definimos cómo se deben presentar las publicaciones:
-
Crear el controlador:
- Utiliza Artisan para crear el controlador:
php artisan make:controller PostsController
.
- Utiliza Artisan para crear el controlador:
-
Definir métodos en el controlador:
- Método
index
: Imprime y organiza todos los post. - Método
show
: Muestra un post individual usando inyección de dependencia.
- Método
public function index()
{
$posts = Post::orderBy('created_at', 'desc')->paginate();
return view('posts.index', compact('posts'));
}
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
¿Cómo implementar las vistas?
Las vistas permiten a los usuarios visualizar los datos. Hay que configurar dos vistas, una para una lista completa de publicaciones y otra para una sola publicación.
-
Crear archivos de vista:
- Crea
resources/views/posts/index.blade.php
para la lista. - Crea
resources/views/posts/show.blade.php
para una sola publicación.
- Crea
-
Configurar contenido de la vista:
- Enumera los posts iterando y creando tarjetas dinámicamente para cada uno.
<!-- index.blade.php -->
@foreach ($posts as $post)
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ $post->title }}</h5>
<p class="card-text">{{ $post->excerpt }}</p>
<a href="{{ route('posts.show', $post) }}">Leer más</a>
</div>
</div>
@endforeach
- En
show.blade.php
imprime directamente el contenido del post seleccionado.
<!-- show.blade.php -->
<div class="card">
<div class="card-body">
<h1 class="card-title">{{ $post->title }}</h1>
<p class="card-text">{{ $post->body }}</p>
<footer>
<p>Escrito por: {{ $post->user->name }} el {{ $post->created_at->format('d-m-Y')}}</p>
</footer>
</div>
</div>
¿Cómo configurar las relaciones entre modelos?
Para manejar datos de forma eficiente, como quién escribió un post, configura relaciones entre los modelos:
-
Una relación de un usuario a muchos post:
- En el modelo Usuario:
public function posts() { return $this->hasMany(Post::class); }
- En el modelo Usuario:
-
Un post pertenece a un usuario:
- En el modelo Post:
public function user() { return $this->belongsTo(User::class); }
- En el modelo Post:
De esta forma, creamos una estructura funcional que soporta una visualización dinámica y personalizada de los contenidos, facilitando la interacción del usuario con el sitio.