路线供应商/产品/操作/新不支持 PUT 方法。支持的方法:POST

问题描述 投票:0回答:1

对.... 疯狂的是,整个代码看起来都是正确的,但仍然出现此错误。 但一定是某个地方出了问题。

产品控制器

public function new(Request $request){

    $request->validate([
        'name' => 'required|max:255|min:10|string',
        'price' => 'numeric|max:255|required',
        'stock' => 'required|numeric|max:255',
        'description' => 'required|string|max:5000|min:10',
        'picture' => 'required|image',
        'picsupp1' => 'image',
        'picsupp2' => 'image',
        'picsupp3' => 'image',
        'delivery' => 'required|string',
        'category' => 'required|string',
    ]);

    $crypt = openssl_random_pseudo_bytes(30);
    $token = bin2hex($crypt);

    $product = new Product;
    $product->name = $request->input('name');
    $product->price = $request->input('price');
    $product->stock = $request->input('stock');
    $product->description = $request->input('description');
    $product->picture = request('picture')->store('articles','public');
    $product->locked = 0;
    if(request('picsupp1')){
        $product->picsupp1 = request('picsupp1')->store('articles','public');
    }else{
        $product->picsupp1 = '';
    }
    if(request('picsupp2')){
        $product->picsupp2 = request('picsupp2')->store('articles','public');
    }else{
        $product->picsupp2 = '';
    }
    if(request('picsupp3')){
        $product->picsupp3 = request('picsupp3')->store('articles','public');
    }else{
        $product->picsupp3 = '';
    }
    $product->delivery_token = $request->input('delivery');
    $product->category_token = $request->input('category');
    $product->vendor_id = Auth::user()->id;
    $product->token = $token;

    $product->save();

    return redirect(route('index'))->with('success','Product added with success !');

}

好的,这里是刀片文件:

Blade File:

<div class="col-lg-9">
  <div class="card mb-4">
    <div class="card-header bg-dark text-white">New product</div>
    <div class="card-body">
        <form method="POST" action="{{ route('product.action.new') }}" enctype="multipart/form-data" >
            @csrf
            @method('PUT')
            <div class="form-floating mb-4">
                <input placeholder="Enter product name" type="text" name="name" class="form-control @error('name') is-invalid @enderror" id="floatingInputGroup1" >
                <label for="floatingInputGroup1">Name <span style="color:red">*</span></label>
                @error('name')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
            </div>
            <div class="form-floating mb-4">
                <select class="form-control mb-4 @error('category') is-invalid @enderror" name="category">
                    @foreach(App\Models\Market\Category::allCategorie() as $item)
                        @if(!empty($item['children']))
                        <option value="{{ $item['token'] }}" >{{ $item['name'] }} </option>
                            @foreach ($item['children'] as $children)
                                <option value="{{ $children['token'] }}" >-- {{ $children['name'] }}</option>
                            @endforeach
                        @else
                            <option value="{{ $item['token'] }}" >{{ $item['name'] }}</option>
                        @endif
                    @endforeach
                </select>
                <label for="floatingInputGroup1">Category <span style="color:red">*</span></label>
                @error('category')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
            </div>
            <div class="input-group">
                <div class="form-floating mb-4 me-4">
                    <input placeholder="Enter product price" type="text"  name="name" class="form-control @error('price') is-invalid @enderror" id="floatingInputGroup1" >
                    <label for="floatingInputGroup1">Price <span style="color:red">*</span></label>
                    @error('price')
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                    @enderror
                </div>

                <div class="form-floating mb-4">
                    <input placeholder="Enter product stock" type="text"  name="name" class="form-control @error('stock') is-invalid @enderror" id="floatingInputGroup1" >
                    <label for="floatingInputGroup1">Stock <span style="color:red">*</span></label>
                    @error('stock')
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                    @enderror
                </div>
            </div>
            <div class="form-floating mb-4">
                <textarea placeholder="Enter product description" style="height:280px" name="description" class="form-control mb-4 @error('description') is-invalid @enderror"></textarea>
                <label for="floatingInputGroup1">Description <span style="color:red">*</span></label>
                @error('description')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                @enderror
            </div>
            <label for="floatingInputGroup1">Picture <span style="color:red">*</span></label>
            <input type="file" name="picture" class="form-control mb-4 @error('picture') is-invalid @enderror" />
            @error('picture')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
            @enderror

            <div class="mb-0">
                <label class="form-label">Picture supp 1</label>
                <input type="file" name="picsupp1" class="form-control mb-4 @error('picsupp1') is-invalid @enderror" />
                @error('picsupp1')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
                @enderror
            </div>
            <div class="mb-0">
                <label>Picture supp 2</label>
                <input type="file" name="picsupp2" class="form-control mb-4 @error('picsupp2') is-invalid @enderror" />
                @error('picsupp2')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
                @enderror
            </div>
            <div class="mb-0">
                <label>Picture supp 3</label>
                <input type="file" name="picsupp3" class="form-control mb-4 @error('picsupp3') is-invalid @enderror" />
                @error('picsupp3')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
                @enderror
            </div>
            <div class="form-floating mb-4">
                <select class="form-control mb-4 @error('delivery') is-invalid @enderror" name="delivery">
                    @foreach(App\Models\Market\Delivery::where('user_id', Auth::user()->id)->get() as $delivery)
                        <option value="{{ $delivery->token }}">{{ $delivery->name }}</option>
                    @endforeach
                </select>
                <label>Delivery <span style="color:red">*</span></label>
                @error('delivery')
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $message }}</strong>
                </span>
                @enderror
            </div>
            <button type="submit" class="btn btn-success">Add product</button>
        </form>
    </div>
  </div>
</div>

最后定义的路线:

Route::post('/vendor/product/action/new', [App\Http\Controllers\Market\ProductController::class, 'new'])->name('product.action.new');

是否有人可能在某个地方看到错误或错误,从昨天开始就一直忙于这个问题,以前从未遇到过这个问题。

php laravel laravel-blade
1个回答
0
投票

问题在于您在表单中使用的 HTTP 方法以及在路由中定义的方法。在您的表单中,您使用的是

@method('PUT')
,它正在尝试发送
PUT
请求。但是,在您的路线定义中,您期待一个
POST
请求。

要解决此问题,您应该从表单中删除

@method('PUT')
行。当您提交表单时,它将发送一个
POST
请求,该请求与您的路由中定义的 HTTP 方法相匹配。

<form method="POST" action="{{ route('product.action.new') }}" enctype="multipart/form-data" >
    @csrf
    <!-- rest of your form fields -->
</form>
© www.soinside.com 2019 - 2024. All rights reserved.