[英]Missing required parameters for Route (Laravel 8)
我在創建或編輯表單時收到此錯誤,您知道它是來自這些視圖之一還是來自 Controller?
[Route: forms.show] [URI: forms/{form}] [Missing parameter: form] 缺少必需的參數
感謝您的幫助,這是我在這里的第一篇文章。
代碼如下:
CONTROLLER 表單控制器:
public function create()
{
if (!Auth::check()) {
return redirect('login');
}
return view('forms.create');
}
public function show($id)
{
return view('forms.consult', ['forms' => Forms::findOrFail($id)]);
}
public function update(StoreFormsRequest $request, Forms $forms)
{
if (!Auth::check()) {
return redirect('login');
}
$request->validated();
$forms->update($request->input());
return redirect()->route('forms.show', ['forms' => $forms]);
}
public function edit($id)
{
if (!Auth::check()) {
return redirect('login');
}
return view('forms.edit', ['forms' => Forms::findOrFail($id)]);
}
查看 create.blade.php:
<form action="{{ url('forms') }}" method="POST">
@csrf
...
<button class="btn btn-primary mb-1 mr-1" type="submit"> Ajouter </button>
</form>
編輯刀片 php:
<form action="{{ url('forms', [$forms->id]) }}" method="POST">
@csrf
@method('PUT')
...
<button class="btn btn-primary mb-1 mr-1" type="submit"> Modifier </button>
</form>
路線
web.php :
Route::get('/', [FormsController::class, 'index']);
Route::resource('forms', FormsController::class);
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/home', [App\Http\Controllers\FormsController::class, 'index'])->name('home');
問題是您的控制器傳遞了一個名為forms
而不是form
的參數。 但是您的路線正在排除form
參數。
改變這個:
return redirect()->route('forms.show', ['forms' => $forms]);
對此:
return redirect()->route('forms.show', ['form' => $forms]);
確保您將“表單”參數傳遞給路由。 在視圖中使用輔助方法,例如
{{ route('forms.show', ['form' => 1]) }}
默認情況下,Route::resource 將根據資源名稱的“單數化”版本為資源路由創建路由參數。
您需要傳遞資源的單數名稱,即 controller FormsController 的單數名稱應該作為表單而不是forms 傳遞。
https://laravel.com/docs/8.x/controllers#restful-naming-resource-route-parameters
我在我的項目中遇到了同樣的問題,我通過了 controller 的單數名稱並且它有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.