Vamos a implementar el método de actualización para modificar los productos guardados en la base de datos.
Para ello, abre app/Http/Controllers/ProductoController.php
y actualízalo:
public function edit(Producto $producto)
{
return view('productos.edit', compact('producto'));
}
En negrita está el código añadido. Ahora tenemos que implementar el método update():
public function update(Request $request, Producto $producto)
{
$producto_data = $request->validate([
'título'=>'required|max:100',
'descripción'=>'required|max:255',
'precio'=>'required|numeric'
]);
$producto->update($producto_data);
return redirect('/productos')->with('success', '¡Producto actualizado!');
}
En negrita está el código añadido. A continuación, hay que crear la plantilla para edit. Para ello, crea el fichero resources/views/productos/edit.blade.php
:
@extends('base')
@section('main')
<div class='row'>
<div class='col-sm-8 offset-sm-2'>
<h1 class='display-3'>Editar</h1>
@if ($errors->any())
<div class='alert alert-danger'>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
<br />
@endif
<form method='post' action="{{ route('productos.update', $producto->id) }}">
@method('PATCH')
@csrf
<div class='form-group'>
<label for='título'>Título:</label>
<input type='text' class='form-control' name='título' value='{{ $producto->título }}' />
</div>
<div class='form-group'>
<label for='descripción'>Descripción:</label>
<input type='text' class='form-control' name='descripción' value='{{ $producto->descripción }}' />
</div>
<div class='form-group'>
<label for='precio'>Precio:</label>
<input type='number' class='form-control' name='precio' value='{{ $producto->precio }}' />
</div>
<button type='submit' class='btn btn-primary'>Actualizar</button>
</form>
</div>
</div>
@endsection
Vamos a comprobar que funciona. Iniciamos el servidor de desarrollo de Laravel: php artisan serve
. Abrimos el navegador y entramos en http://localhost:8000/productos
.
Curso creado por Manuel Ignacio López Quintero bajo esta licencia.