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 »</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!