首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缺少路线所需参数(Laravel 8)

缺少路线所需参数(Laravel 8)
EN

Stack Overflow用户
提问于 2021-11-09 08:05:48
回答 3查看 6.1K关注 0票数 1

当我创建或编辑一个表单时,我会得到这个错误,您知道它是来自其中一个视图还是来自Controller?

缺少路由所需参数: forms.show缺少参数:表单

感谢您的帮助,这是我在这里的第一篇文章。

代码如下:

控制器FormsController:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<form action="{{ url('forms') }}" method="POST">
  @csrf
...
<button class="btn btn-primary mb-1 mr-1" type="submit"> Ajouter </button>
</form>

edit.blade.php:

代码语言:javascript
运行
复制
<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>

路由

代码语言:javascript
运行
复制
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');
EN

回答 3

Stack Overflow用户

发布于 2021-11-09 08:49:53

问题是,您的控制器传递一个名为forms的参数,而不是form。但是您的路由需要一个form参数。

改变这一点:

代码语言:javascript
运行
复制
return redirect()->route('forms.show', ['forms' => $forms]);

对此:

代码语言:javascript
运行
复制
return redirect()->route('forms.show', ['form' => $forms]);
票数 3
EN

Stack Overflow用户

发布于 2021-11-09 08:50:38

请确保将“窗体”参数传递到路由。在视图中使用辅助方法,例如

代码语言:javascript
运行
复制
{{ route('forms.show', ['form' => 1]) }}
票数 1
EN

Stack Overflow用户

发布于 2022-04-05 17:20:10

默认情况下,路由::资源将根据资源名称的“奇异化”版本为资源路由创建路由参数。

您需要传递资源的单数名称,即控制器FormsController的单数名称应该作为form而不是forms传递。

https://laravel.com/docs/8.x/controllers#restful-naming-resource-route-parameters

在我的项目中,我遇到了同样的问题,我传递了控制器的单数名称,并且它起了作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69894686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档