Laravel 8:[路线:students.update]缺少必需的参数

Posted

技术标签:

【中文标题】Laravel 8:[路线:students.update]缺少必需的参数【英文标题】:Laravel 8: Missing required parameter for [Route: students.update] 【发布时间】:2021-11-06 04:30:52 【问题描述】:

所以我试图理解 laravel,因为我是新手,所以我正在创建一个简单的 crud 应用程序...... 我有点卡在编辑部分了。

我遇到了这个错误:

缺少 [Route: students.update] [URI: students/student] [缺少参数:student] 的必需参数

我很确定我传递了一个参数,该参数是所选行的 id。请帮助.tnx

这是我的控制器:

 public function edit(Students $students)
    
        return view('students.edit', compact('students'));
    

public function update(Request $request, Students $students)
    
        $this->validate($request, [
            'fname' => 'required',
            'lname' => 'required',
            'age' => 'required',
            'course' => 'required'
        ]);
        $students->update($request->all());
        return redirect()->route('students.index')->with('success','Student updated successfully');
    

这是编辑按钮所在的视图

@foreach($students as $student)
          <tr>
            *some codes*
            <td>
                <a href=" route('students.edit', $student->id) " class="btn btn-success" id="editBtn">Edit</a>          
            </td>
          </tr>
        @endforeach

这是编辑视图

<form method="POST" action=" route('students.update', $students->id) ">
        @csrf
        @method('PUT')

        *some codes*

        <input type="submit" id="update" class="btn btn-success" value="Update"/>
</form>

【问题讨论】:

试试 route('students.edit', ['student' =&gt; $student]) ,或者只是 route('students.edit', $student) 。旁注,包括来自web.php 的相关路线将在这里有所帮助,因此我们可以看到您是如何定义路线的。另外,模型名称是单数的,应该是Student $student,而不是Students $students 我试过了,但它不起作用,所以我重新启动了一切,它就起作用了。另外,这次我将模型名称设为单数。顺便说一句,谢谢。 【参考方案1】:

我认为您正在传递 $students-&gt;id 并期待学生对象。 尝试将$students 作为对象传递。

<form method="POST" action=" route('students.update', $students) ">
        @csrf
        @method('PUT')

        *some codes*

        <input type="submit" id="update" class="btn btn-success" value="Update"></button>
</form>

编辑也一样:

<a href=" route('students.edit', $student) " class="btn btn-success" id="editBtn">Edit</a>

【讨论】:

以上是关于Laravel 8:[路线:students.update]缺少必需的参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在路线中添加部分 ID - Laravel 8

如何在 Laravel 8 上获得正确的路线

Laravel 8 从下到上的路线顺序

Laravel 8:[路线:students.update]缺少必需的参数

未定义路由 [threads.storev]。 Laravel 8 如何制作这条路线?

Laravel 8 的动态路由