Home | Clases | Creación de un CMS en PHP con Laravel | Noticias en el front-end

Noticias en el front-end


Introducción

En este apartado aprenderemos a trabajar con un modelo en Laravel, aprendiendo la manera de crear además tanto la tabla de la base de datos asociada a ese modelo como su controlador.


Creación de archivos

Por defecto, desde Laravel 5 los modelos se crean en la carpeta app, lo cual según Laravel puede tener su justificación en proyectos de gran envergadura, pero desde luego a nivel de organización de archivos es un poco lioso, ya que estarían "colgando" de la nada.

Por ese motivo, vamos a crearlos dentro de una carpeta llamada Models (dentro de app).

Dicho esto, el comando para crear un modelo Noticia desde la consola, así como su controlador NoticiaController asociado (flag -m) y un archivo de migration para la posterior creación de la tabla (flag -r) sería el siguiente:



Si ahora revisas tus carpetas app y database/migrations (probablemente tengas que actualizarlas en tu IDE o bien volverlas a descargar por completo), comprobarás que se han creado diferentes archivos.


app/Models/Noticia



Todos los modelos que creemos extenderán la clase Illuminate\Database\Eloquent\Model, lo cual nos permitirá, comov eremos más adelante, trabajar con la tabla de la base de datos de manera muy sencilla.

Por defecto y convención del inglés, el modelo trabajará con una tabla cuyo nombre será el nombre del modelo en minúsculas seguido de una s (noticias), si bien eso lo podríamos cambiar añadiendo al modelo la variable protegida $table = "nombre-de-la-tabla".


app/Http/Controllers/NoticiaController.php



El controlador se crea con las acciones por defecto más utilizadas, a saber:


  • index(): que usaremos en el panel de administración para listar las noticias.

  • create(): que usaremos en el panel de administración para crear una nueva noticia.

  • store(Request $request): que usaremos en el panel de administración para guardar una nueva noticia.

  • show(): para mostrar una noticia. En nuestro caso, esto lo haremos desde nuestro controller del front-end (Controller).

  • edit(Noticia $noticia): que usaremos en el panel de administración para editar una noticia.

  • update(Request $request, Noticia $noticia): que usaremos en el panel de administración para guardar una noticia.

  • destroy(Noticia $noticia): que usaremos en el panel de administración para borrar una noticia.



Más adelante añadiremos otros métodos para el resto de acciones que necesitemos (activar, mostrar en home, etc.).


database/migrations/yyyy_mm_dd_hhiiss_create_noticias_table.php



Con este archivo podremos crear la tabla noticias desde la consola, si bien previamente deberíamos modificarlo para que incluya los campos necesarios:



Todas las opciones disponibles las puedes encontrar en la dirección https://laravel.com/docs/5.8/migrations.


Realizar la migración

Para finalizar, tan solo debes ejecutar desde la consola el comando:



Si ahora consultas tu base de datos, verás que se ha creado la tabla noticias con todos los campos indicados, así como la tabla migrations para almacenar las migraciones que ya se han ejecutado y las tablas usersy password_resets que estaban pendientes de una migración por defecto de Laravel y de las que hablaremos en el apartado de usuarios (Auth).

IMPORTANTE: Si estás en la consola como usuario root, al ejecutar el comando anterior es posible que se haya generado un archivo de log con usuario root que Laravel no es capaz de leer, lanzando un error de permisos en el navegador.

Para resolverlo, modifica el usuario de dicho archivo (o directamente de la carpeta storage/logs) completa para que pertenezca a www-data:www-data mediante el comando sudo chown -R www-data:www-data storage/logs (desde la raíz de tu proyecto).


Creación de contenido de ejemplo

Una vez creada la tabla y para finalizar este apartado, podríamos añadir contenido de ejemplo desde la consola SQL de la siguiente forma:



En el siguiente apartado mostraremos estas noticias en las distintas vistas del front-end.
Fecha de publicación: 24/05/2019
Asignaturas: desarrollo web en entorno servidordespliegue de aplicaciones web
Temas: blog gestor de contenidos laravel php css jquery
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos