繁体   English   中英

Laravel 8 无法使用输入表单更改图像

[英]Laravel 8 Can't change image with input form

我正在尝试通过用新图像替换图像来更新我的 laravel 项目,但由于某种原因它无法正常工作。 当我发布新帖子时,我添加的图像会显示出来,但是当我更新图像时它不会改变。 当我更新我的图像帖子时,图像文件也不会显示在 laravel 文件夹中。 我正在使用 laravel 8。

PRODUCTSCONTROLLER.PHP

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductsController extends Controller
{

public function edit($id){
        $product = Product::findOrFail($id);
        return view('products.edit', ['product' => $product]);  
}

public function update(Request $request, $id){
    
    request()->validate([                          
        'product_name' => ['required', 'min:2', 'max:50'],
        'product_price' => 'required',
        'product_desc' => ['required', 'min:2', 'max:300'],
        'product_img' => 'image|nullable|max:1999'
    ]);

     // Handle File Upload
     if($request->hasFile('product_img')){
        // Get filename with the extension
        $filenameWithExt = $request->file('product_img')->getClientOriginalName();
        // Get just filename
        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
        // Get just ext
        $extension = $request->file('product_img')->getClientOriginalExtension();
        // Filename to store
        $fileNameToStore= $filename.'_'.time().'.'.$extension;
        // Upload Image
        $path = $request->file('product_img')->storeAs('public/uploads', $fileNameToStore);
     }
    
    $product = Product::findOrFail($id);
    $product->product_name = request('product_name');
    $product->product_price = request('product_price');
    $product->product_desc = request('product_desc');
    if($request->hasFile('product_img')){
        $product->product_img = $fileNameToStore;
     }
    $product->save();

    return redirect('/products');
    
}

}

EDIT.BLADE.PHP

 <div class="product-wrapper">
      
        <div class="container">

            <form method="POST" action="/products/{{$product->id}}">
                @csrf
                @method('PUT')
                
              
                <div class="form-row">
                    <div class="col-md-6">
                        <label for="product-name">Toote nimi</label>
                        <input type="text" class="form-control {{ $errors->has('product_name') ? 'alert-danger' : '' }}" name="product_name" id="product-name" placeholder="" value="{{ $product->product_name }}" required>
                    </div>
                </div>
                <div class="form-row">
                    <div class="col-md-6">
                        <label for="product-desc">Toote hind</label>
                        <input type="text" class="form-control {{ $errors->has('product_price') ? 'alert-danger' : '' }}" name="product_price" id="product-price" placeholder="" value="{{ $product->product_price }}" required>
                    </div>
                </div>
                <div class="form-row">
                    <div class="col-md-6">
                        <input type="file" name="product_img">
                    </div>    
                </div>  
                <div class="form-row">
                    <div class="col-md-6">
                        <label for="product-desc">Toote kirjeldus</label>
                        <textarea class="form-control {{ $errors->has('product_desc') ? 'alert-danger' : '' }}" name="product_desc" id="product-desc" required>{{ $product->product_desc }}</textarea>   
                    </div>
                </div>
              
                    <input type="submit" class="btn btn-primary" value="submit">
             
            </form>     
        </div>
    </div>

WEB.PHP

Route::get('/products/edit/{product}', [\App\Http\Controllers\ProductsController::class,'edit'])->middleware('auth');
Route::put('/products/{product}', [\App\Http\Controllers\ProductsController::class,'update'])->middleware('auth');

您必须使用multipart/form-data的值将enctype属性添加到更新form以允许文件上传(在您的情况下为图像),您将拥有类似<form method="POST" action="/products/{{$product->id}}" enctype="multipart/form-data">...</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM