Post Top Ad

Your Ad Spot

jueves, 30 de julio de 2020

Cómo configurar el envío de formularios en Laravel

Cómo configurar el envío de formularios en Laravel

En nuestra pequeña aplicación de juegos, todavía no tenemos una manera de agregar nuevos juegos a la base de datos utilizando la aplicación en sí. 


Agregar juegos / crear ruta y método GamesController @ create

Por convención, cuando desea mostrar un formulario, solicitud GETgames/create . GamesController @ create . games/createy necesitamos un método en el controlador para GamesController @ create. 


rutas / web.php


app / Http / Controllers / GamesController.php


Prueba la ruta

Con la nueva ruta y el nuevo método de controlador, probémosla rápidamente en el navegador. http://54.dev/games/create , notamos un problema.

Lo sentimos, la página que estás buscando no se pudo encontrar.

2/2
NotFoundHttpException en Handler.php línea 131:
No hay resultados de consultas para el modelo [App \ Game].

Uh oh, eso no es genial. http://54.dev/games/create , en realidad estamos activando Route :: get ('games / {id}', 'GamesController @ show'); ruta y esto no es lo que queremos. 

Cuando visitamos la ruta ahora, obtenemos el bonito texto de 'funciona' para que sepamos que la ruta y el método de controlador que queremos que funcionen. create()método para representar un archivo de vista para que podamos ver el formulario.


Cree una nueva vista de create.blade.php y agregue un formulario

Dentro de los recursos / vistas / juegos continúe y agregue un archivo de vista llamado create.blade.phpsubir una imagen para el juego. 


recursos / vistas / juegos / create.blade.php

Visitar http://54.dev/games/create nos muestra un formulario bastante atractivo para enviar un nuevo juego.
formulario create-blade-php para enviar datos

Repasemos algunos puntos importantes sobre el nuevo formulario.

  • El método debe configurarse para publicar : cada formulario tendrá un atributo llamado método . el tipo de solicitud HTTP que realizará con el formulario. POST . 
  • El acción se establece en / games : el otro atributo al que debemos prestar atención en los formularios es el acción . una solicitud posterior a/games
  • El enctype se establece en multipart / form-data : dado que incluimos la capacidad de cargar una imagen, necesitamos establecer el enctype en multipart / form-data.
  • Se requiere 
  • cada entrada tiene un nombre único nombre con un conjunto de valores único. 
  • tipo de envío : para enviar el formulario, ¡necesitará un botón con su tipo configurado para enviar!

Agregar ruta de publicación / juegos y método GamesController @ store

Para procesar realmente los datos que ingresamos en nuestro formulario, necesitamos la ruta asociada y el método del controlador para hacerlo. 


Obtener datos del envío del formulario

Todavía no vamos a intentar guardar ningún dato. título , editor , fecha de lanzamiento e imagen . store()método en nuestro GamesController de esta manera por un segundo rápido.

Avancemos y enviemos nuestro formulario ahora para ver qué obtenemos. 
enviar un formulario con carga de archivos

El resultado de deshacerse de nuestros datos de solicitud se ve así.
Datos de solicitud de inspección del envío del formulario laravel

Esto muestra que definitivamente estamos obteniendo todos los datos que queremos. 

Ahora queremos poder guardar el título , el editor , la fecha de lanzamiento y la imagen en la base de datos. 

Ahora vamos a ejecutar php artisan migrate: refresh , que restablecerá y volverá a ejecutar todas las migraciones. 
actualización de migración artesanal de php


Almacenar el juego en la base de datos

Con nuestra tabla de juegos ahora actualizada para incluir una ruta para un archivo de imagen, estamos listos para almacenar un juego en la base de datos. store()método para hacer eso por nosotros.

Lo que sucede en este store()método es bastante sencillo. request()función auxiliar para acceder a los datos que deseamos del formulario. $ game-> image = request () -> file ('image') -> store ('public / images'); Aquí suceden dos cosas a la vez. storage / app / public / images . ruta de la imagen se almacena, por $game->image lo que recuperamos la fuente de la imagen cuando queremos mostrarla en el navegador más adelante. 

nuevo juego se agrega a través del formulario de éxito

¡Si! 


Cómo mostrar imágenes almacenadas

Vamos a necesitar actualizar nuestra show.blade.php vista para que podamos hacer uso de nuestro archivo de imagen recién cargado. 

Eliminar esta línea resaltada

Y reemplazar así


Cree un enlace simbólico de public / storage a storage / app / public

Usando el método que hemos tomado anteriormente, las imágenes se almacenarán en el directorio de almacenamiento, o más específicamente en storage / app / public / images. enlace simbólico de public / storage a storage / app / public. php artisan storage: link

mklink / DC: \ localdev \ 54 \ public \ storage C: \ localdev \ 54 \ storage \ app \ public

Agreguemos un juego más para asegurarnos de que todo funcione.
formulario enviar con carga de archivos laravel

¡Parece que está funcionando muy bien!
carga de archivos y visualización exitosa


Cómo configurar el envío de formularios en el resumen de Laravel

Dimos un gran paso en este tutorial. 

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas