Configuración de Rutas y Controladores en Laravel para Listado de Posts

Clase 19 de 37Curso de Introducción a Laravel 6

Contenido del curso

Crear PlatziPress

Construir Proyecto Final: API con TDD (Intermedio)

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:

  1. 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.
  2. Configura rutas para publicaciones individuales:

    • Usa un parámetro dinámico en la ruta, como Blog/{post}, y dirígelo al método post en singular.
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:

  1. Crear el controlador:

    • Utiliza Artisan para crear el controlador: php artisan make:controller PostsController.
  2. 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.
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.

  1. 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.
  2. 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:

  1. Una relación de un usuario a muchos post:

    • En el modelo Usuario: public function posts() { return $this->hasMany(Post::class); }
  2. Un post pertenece a un usuario:

    • En el modelo Post: public function user() { return $this->belongsTo(User::class); }

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.