En esta lección del Curso de Laravel 10, crearemos un formulario de edición. Gracias a todo lo que hemos aprendido hasta ahora el proceso será muy sencillo. Vamos a ver cómo mostrar los datos de nuestro modelo en los campos de nuestro formulario y cómo vincular formularios con rutas de actualización. Este tutorial, acompañado de ejemplos prácticos y consejos útiles, te equipará con todo lo que necesitas para mejorar la funcionalidad y la experiencia de usuario en tus proyectos de Laravel.
Mira el código en GitHub: actual, resultado, comparación.
Cómo pasar datos a nuestras vistas en Laravel 10
Laravel provee de varias formas en las que podemos pasar datos a nuestras vistas:
Podemos pasar la nota a nuestra vista encadenando el método with
al helper view
:
<?php return view('notes.edit')->with('note', $note);
También podemos lograr el mismo resultado pasando un arreglo asociativo como segundo argumento a view
:
<?php return view('notes.edit', ['note' => $note]);
O incluso, usando la característica de métodos mágicos de PHP, Laravel nos permite hacer lo siguiente:
<?php return view('notes.edit')->withNote($note);
Mostrar los valores en el formulario de edición
Para mostrar el valor actual en el formulario pasamos la propiedad de nuestro modelo como segundo argumento a old()
:
<input type="text" name="title" value="{{ old('title', $note->title) }}">
De esta manera, si ocurre un error de validación, el usuario no perdería los cambios que ha realizado y de lo contrario el usuario verá el título y contenido actual de la nota.
Enlazar el formulario a la ruta de actualización de registros
Debemos actualizar el valor del atributo action
de nuestro formulario con la URL a la cual queremos apuntar para actualizar nuestro registro. En este caso usaremos la ruta notes.update
.
Ademas tenemos que pasar el ID de la nota como parámetro a nuestra ruta para que esta funcione de forma correcta:
<form action="{{ route('notes.update', ['id' => $note->id]) }}" method="POST">
Usaremos el verbo HTTP put
cuando queramos editar un registro en la base de datos. Para ello, declaramos la ruta con Route::put()
.
Debido a que HTML solo soporta GET
y POST
como valor del atributo method, para pasar el método correcto en el formulario debemos hacer uso de la directiva @method
de Laravel:
<form action="{{ route('notes.update') }}" method="POST"> @csrf @method('put') <!-- Resto de nuestro formulario --> </form>
Esta directiva va a generar el HTML de un campo oculto llamado _method
.
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Controladores en Laravel 10 o superior Lección siguiente Actualización de registros en Laravel 10 o superior