调整web.php中Route::resource发生参数缺失错误



我正在学习Laravel CRUD路由。昨天我发布了我的问题,很多人帮助了我。在我的例子中,我使用了dasun Tharanga先生的答案并解决了。

有没有最简单的方法来改变'resource 'name in web.php [Laravel9]

它工作得很好,但是在编辑页我遇到了这个错误。

缺少所需参数[Route: ddd. d]。[URI: ddd/{ddd}][缺少参数:ddd]

当我作为原始的"学生"回滚时,它可以工作。我检查了控制器和模型路由,但我找不到原因。谁能教我怎么修这个?

这是我当前的web.php

web.php

Route::resource('ddd', StudentController::class);

edit.blade

<form method="post" action="{{ route('ddd.update', $student->id) }}" enctype="multipart/form-data">

StudentController.php

public function edit(Student $student)
{
return view('edit', compact('student'));
}

GET|HEAD        ddd ...................................................................... ddd.index › StudentController@index
POST            ddd ...................................................................... ddd.store › StudentController@store
GET|HEAD        ddd/create ............................................................. ddd.create › StudentController@create  
GET|HEAD        ddd/{ddd} .................................................................. ddd.show › StudentController@show  
PUT|PATCH       ddd/{ddd} .............................................................. ddd.update › StudentController@update  
DELETE          ddd/{ddd} ............................................................ ddd.destroy › StudentController@destroy  
GET|HEAD        ddd/{ddd}/edit ............................................................. ddd.edit › StudentController@edit

在我更改web.php之前,工作编辑页面的url是这样的

http://127.0.0.1:8000/学生/5/编辑

正如我对你老问题的回答,你可以考虑命名资源路由参数

在Web.php

Route::resource('fun_student', StudentController::class)->parameters([
'ddd' => 'student'
]);

或者您可以选择另一种方式,即在edit方法中更改参数的名称。

public function edit(Student $ddd)
{
return view('edit', compact('ddd'));
}

记住,当你把一个模型实例作为控制器方法的参数时,路由段名称必须与控制器方法的参数名称相同。参考https://laravel.com/docs/10.x/routing隐式绑定

相关内容

  • 没有找到相关文章

最新更新