当我创建或编辑一个表单时,我会得到这个错误,您知道它是来自其中一个视图还是来自Controller?
缺少路由所需参数: forms.show缺少参数:表单
感谢您的帮助,这是我在这里的第一篇文章。
代码如下:
控制器FormsController:
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>
edit.blade.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');
发布于 2021-11-09 08:49:53
问题是,您的控制器传递一个名为forms
的参数,而不是form
。但是您的路由需要一个form
参数。
改变这一点:
return redirect()->route('forms.show', ['forms' => $forms]);
对此:
return redirect()->route('forms.show', ['form' => $forms]);
发布于 2021-11-09 08:50:38
请确保将“窗体”参数传递到路由。在视图中使用辅助方法,例如
{{ route('forms.show', ['form' => 1]) }}
发布于 2022-04-05 17:20:10
默认情况下,路由::资源将根据资源名称的“奇异化”版本为资源路由创建路由参数。
您需要传递资源的单数名称,即控制器FormsController的单数名称应该作为form而不是forms传递。
https://laravel.com/docs/8.x/controllers#restful-naming-resource-route-parameters
在我的项目中,我遇到了同样的问题,我传递了控制器的单数名称,并且它起了作用。
https://stackoverflow.com/questions/69894686
复制相似问题