jairogarcíarincón
06/09/2023
Contenidos
- Objetivos
- Instalación
- Configuración
- Base de datos
- Plug-ins
- Enrutando la home
- Layout y rutas del front-end
- Noticias en el front-end
- Resto de vistas del front-end
- Auth
- Layout del back-end
- Vistas y acciones de Auth
- Usuarios en el back-end
- Noticias en el back-end
- Helpers
- Paginación de noticias
- API de noticias
- Cambiar contraseña con envío de email
- Conclusiones
- Práctica: CMS con Laravel
Introducción
Puesto que ya previamente en el front-end habíamos creado el modelo Noticia, en este apartado podemos directamente desarrollar las acciones relativas a la gestión de noticias desde el panel de administración, así como sus vistas asociadas.
Archivo de rutas
No obstante, lo primero que debemos hacer es añadir a nuestro archivo routes/web.php, al que además le añadiremos una ruta "comodín" o ruta por defecto para redireccionar a la home en caso de no encontrar una ruta válida:
Como ves, estas rutas usan el middleware Roles que ya creamos y utilizamos en usuarios, si bien en este caso lo que se comprueba es que el usuario tenga acceso a noticias.
NoticiaController
Modifica el archivo app/Http/Controller/NoticiaController con el siguiente contenido:
IMPORTANTE: Para poder modificar y subir imágenes, la carpeta public/img debe ser accesible para escritura por el usuario www-data:www-data, que es el que asigna Apache2 al usuario del navegador.
Modelo Noticia
A la hora de guardar una nueva noticia, hemos utilizado el método create de Laravel, que, tal y como ya hicimos en Usuario, nos obliga a indicar qué atributos del modelo son asignables en masa o fillables.
Modifica el modelo Noticia (app/Models/Noticia.php):
NoticiaRequest
También en este caso hemos creado un FormRequest para validar ciertos datos de las noticias.
Para ello, primero hemos creado NoticiaRequest desde la consola con el comando:
Y luego lo hemos editado para incluir nuestras reglas (archivo app/Http/Requests/NoticiaRequest.php):
Vista de listado de noticias (archivo resources/views/admin/noticias/index.blade.php)
Vista de creación/edición de noticias (archivo resources/views/admin/noticias/editar.blade.php)
Ejercicios propuestos
- Modifica el proyecto para que sea obligatorio que las noticias incluyan una imagen.
- Modifica el proyecto para que el único formato de imagen admitido sea jpg.
- Usando la librería Intervention Image, modifica el proyecto para que admita distintos tipos de imágenes, pero estas se conviertan a png con un ancho fijo de 900px (y un alto proporcional que no deforme la imagen).
Publicado el 29 de Enero de 2025
bloggestor de contenidoslaravelphpcssjquery