我想让卖家可以编辑和更新产品
这是ProductController
public function edit($id)
{
$product = Product::find($id);
return view('product.edit', compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$product = Product::find($id);
$product-> title = $request-> title;
$product-> description = $request-> description;
$product-> price = $request-> price;
if($request->hasFile('image')){
$file = $request-> file('image');
$filename = time().'.'.$file-> getClientOriginalExtension();
$location = public_path('/images');
$file-> move($location, $filename);
$oldImage = $product->image;
\Storage::delete($oldImage);
$product-> image= $filename;
}
$product-> save();
return back();
}
这是edit.blade.php
<form action="{{route('product.update', $product->id)}}" method="post" enctype="multipart/form-data">
{{csrf_field()}}
{{method_field('put')}}
[...]
<button type="submit" class="btn btn-success">Submit</button>
这是web.php
Route::get('/index', 'ProductController@index');//seller view all product
Route::get('/create', 'ProductController@create'); //seller create new product
Route::post('','ProductController@store')->name('product.store'); //store in database
Route::get('/edit/{id}','ProductController@edit'); // seller edit post
Route::post('','ProductController@update')->name('product.update'); //seller update
当我单击提交按钮进行更新时 此路由不支持PUT方法。支持的方法:GET,HEAD,POST。出现
我该如何解决?请帮助
答案 0 :(得分:0)
您应该在路线中使用PUT;
Route::put('','ProductController@update')->name('product.update');
而不是produc.update,除了product-> id
<form action="{{route('product.update')}}" method="post" enctype="multipart/form-data">
{{csrf_field()}}
{{method_field('put')}}
[...]
<button type="submit" class="btn btn-success">Submit</button>
答案 1 :(得分:0)
您需要在表单请求中传递id
参数,如下所示:
<form action="{{ route('product.update', $product->id) }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('put') }}
[...]
<button type="submit" class="btn btn-success">Submit</button>
然后将您的控制器方法修改如下:
Route::put('edit/{id}','ProductController@update')->name('product.update');
这是因为您的控制器方法期望在请求中传递一个id
,但实际上并没有接收到一个,因此出错。
我希望这会有所帮助!
答案 2 :(得分:0)
请重试;
Route::put('edit/{id}','ProductController@update')->name('product.update');
和
<form action="{{ route('product.update', ["id" => $product->id]) }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('put') }}
[...]
<button type="submit" class="btn btn-success">Submit</button>