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.

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

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