对.... 疯狂的是,整个代码看起来都是正确的,但仍然出现此错误。 但一定是某个地方出了问题。
产品控制器
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');
是否有人可能在某个地方看到错误或错误,从昨天开始就一直忙于这个问题,以前从未遇到过这个问题。
问题在于您在表单中使用的 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>