CMS en Laravel 10 principiantes


Estoy muy contento por el resultado de este primer ejercicio, ya que te permitirá repasar y conocer el detalle de cada concepto como model, route, view, controller, factory, migration y seeder (conceptos son fundamentales) y comenzamos con el comando:

$ laravel new example

Se llama CMS porque usamos a una tabla llamada posts y lo interesante es que tendremos dos tipos ['PAGE', 'POST'] para que un “cliente” pueda administrar su contenido. El ejercicio involucra a Eloquent, Local Scopes, Bootstrap CSS y estructura de base de datos.

Sinceramente ¡Está bueno para comenzar!

La clase está dividida en cuatro partes:

Bases del proyecto

$ php artisan make:model Post -mf
$ php artisan migrate --seed

En este popular paso creamos a la base de datos y configuramos sy conexión, entendiendo que un Model representa a la interacción con la tabla, gracias a él podemos hacer consultas y manipular a los datos. Y vemos otros conceptos como migraciones, factories y seeders.

Las migraciones las utilizamos para crear y modificar nuestras tablas. Con ella definimos los esquemas, en lugar de hacerlo manualmente en la base de datos. Esto por supuesto facilita el mantenimiento y que podamos trabajar con otros compañeros.

Respecto a los factories, estos se utilizan para generar datos ficticios, con este molde poblamos a nuestras tablas. Aquí definimos la estructura y los valores por defecto. Todo esto se encuentra en el mismo grupo de Laravel (carpeta database).

Los seeders los utilizamos para llenar de datos ficticios o falsos a nuestras tablas. Lo logramos mediante los factories o con datos que podamos organizar manual y estructuradamente.

Diseño inicial

$ php artisan make:controller PageController

Un controlador gestiona la lógica de la aplicación y coordina o resuelve las solicitudes de los usuarios. En esta parte desarrollamos a la plantilla, configuramos al controlador con sus métodos, preparamos a las rutas y desarrollamos a las vistas blog y post.

Estructura de las vistas

Como en el paso anterior definimos a la plantilla, aquí nos enfocamos en la vista blog y post.

blog.blade.php

@extends('app')

@section('content')
<div class="container px-3 py-5">
    <h1>Blog</h1>

    <hr>

    @foreach($posts as $post)
    <h4>{{ $post->title }}</h4>

    <p class="small text-secondary">
        <i>Fecha de publicación</i> {{ $post->created_at->format('d-m-Y') }}

        <br>
        
        <a href="{{ route('post', $post->slug) }}">ver más &raquo;</a>
    </p>
    @endforeach  
</div>
@endsection

post.blade.php

@extends('app')

@section('content')
<div class="container px-3 py-5">
    <h1>{{ $post->title }}</h1>

    <hr>

    <p>{{ $post->body }}</p>
</div>
@endsection

Local scopes

Aquí te enseño un tip importante para crear código que puedes reutilizar en cualquier parte del sistema.

Haz el proyecto y conoce los conceptos claves de Laravel, tendrás un sistema correcto y bien estructurado.

Después de estudiar esta clase, únete al Discord y revisa el repositorio en Github.

¡Que sigas estando bien!