【发布时间】:2021-07-05 17:39:23
【问题描述】:
我尝试使用表单提交产品评论,但我认为提交按钮使用了不正确的控制器存储方法。我有一个产品控制器和一个评论控制器。产品商店工作正常,我可以看到数据库在提交后被填充,但是当我提交产品评论时,它会从产品商店表单中抛出自定义错误消息。如果我将评论表单::open 更改为产品表单::open 它将引发错误:此路由不支持 PUT 方法。支持的方法:GET、HEAD、POST。
产品形式(正常工作)
{!! Form::open(['action' => 'App\Http\Controllers\ProductsController@store', 'method' => 'POST', 'enctype' => 'multipart/form-data']) !!}
... labels and text ...
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
{!! Form::close() !!}
评价表
<div>
<p>Write a review</p>
<!-- submit review form -->
{!! Form::open(['reviews' => 'App\Http\Controllers\ReviewsController@store']) !!}
<div class="form-group">
{{ Form::textarea('description', '', ['class' => 'form-control', 'placeholder' => 'Write your message']) }}
</div>
<div class="form-group">
{{ Form::label('rating', 'Rating') }}
{{ Form::select('rating', ['1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5'], '1') }}
</div>
{{ Form::hidden('_method', 'PUT') }}
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
{!! Form::close() !!}
</div>
评论控制器存储
public function store(Request $request, $id)
{
$this->validate($request, ['description' => 'nullable',
'rating' => 'nullable',
]);
$review = new Review;
$review->rating = $request->input('rating');
$review->reviewerid = auth()->user()->id;
$review->productid = $id;
$review->description = $request->input('description');
$review->save();
return redirect('/products/$id')->with('success', 'Review submitted');
}
Web.php 文件
Route::get('/', 'App\Http\Controllers\PagesController@index');
Route::get('/about', 'App\Http\Controllers\PagesController@abouts');
Route::get('/cart', 'App\Http\Controllers\PagesController@cart');
Route::get('/checkout', 'App\Http\Controllers\PagesController@checkout');
Route::get('/dashboard', 'App\Http\Controllers\PagesController@services');
Route::get('/categories/{Category}', 'App\Http\Controllers\PagesController@category');
Route::resource('reviews', 'App\Http\Controllers\ReviewsController');
Route::resource('products', 'App\Http\Controllers\ProductsController');
Auth::routes();
【问题讨论】: