Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:laravel:formularios

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:php:frameworks:laravel:formularios [2023/06/10 14:51] – [Datos provenientes de formularios] tempwininformatica:programacion:php:frameworks:laravel:formularios [2023/06/10 15:30] (actual) tempwin
Línea 156: Línea 156:
  
 <code html5> <code html5>
 +@extends("layout.master")
  
 +@section("content")
 +    <h1>Edit a product</h1>
 +    
 +    <form method="post" action="{{ route("products.update", ["product" => $product->id]) }}">
 +        @csrf
 +        @method("PUT")
 +        <div class="form-row">
 +            <label>Title</label>
 +            <input class="form-control" type="text" name="title" value="{{ $product->title }}" required>
 +        </div>
 +        <div class="form-row">
 +            <label>Description</label>
 +            <input class="form-control" type="text" name="description" value="{{ $product->description }} required>
 +        </div>
 +        <div class="form-row">
 +            <label>Price</label>
 +            <input class="form-control" type="number" min="1.00" step="0.01" name="price" value="{{ $product->price }} required>
 +        </div>                
 +        <div class="form-row">
 +            <label>Stock</label>
 +            <input class="form-control" type="number" min="0" name="stock" value="{{ $product->stock }} required>
 +        </div>                  
 +        <div class="form-row">
 +            <label>Status</label>      
 +            <select class="custom-select" name="status" required>
 +                <option {{ $product->status == "available" ? "selected" : "" }} value="available">Available</option>                
 +                <option {{ $product->status == "unavailable" ? "selected" : "" }} value="unavailable">Unavailable</option>                                
 +            </select>
 +        </div>
 +        <div class="form-row">
 +            <button type="submit" class="btn btn-primary btn-lg">Edit product</button>
 +        </div>
 +    </form>
 +</code>
 +
 +Los navegadores solo procesan GET y POST, así que para forzar un tipo de petición, usamos ''@method'' que añadirá una etiqueta ''input'' oculta con el valor que le pasemos.
 +
 +Para realizar la actualización del producto, en el controlador:
 +
 +<code php>
 +public function update($product) 
 +{
 +    $product = Product::findOrFail($product);
 +    
 +    $product->update(request()->all());
 +    
 +    return $product;
 +}
 +</code>
 +
 +===== Eliminar de la base de datos =====
 +
 +En Laravel tenemos que usar un formulario también para eliminar productos. En nuestro controlador, modificaremos el método ''destroy'':
 +
 +<code php>
 +public function destroy($product) 
 +{
 +    $product = Product::findOrFail($product);
 +    
 +    $product->delete();
 +}
 +</code>
 +
 +Recordemos que debe existir una ruta:
 +
 +<code php>
 +Route::delete("products/{product}", "ProductController@destroy")->name("products.destroy");
 +</code>
 +
 +Finalmente, para dar la opción de eliminar un producto, basta con crear un enlace, pero debe ser usando el método DELETE:
 +
 +<code html5>
 +<form method="post" action="{{ route("products.destroy", ["product" => product->id]) }}">
 +    @csrf
 +    @method("DELETE")
 +    <button type="submit" class="btn btn-link">Delete</button>
 +</form>
 </code> </code>
informatica/programacion/php/frameworks/laravel/formularios.1686401497.txt.gz · Última modificación: por tempwin