我正在学习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隐式绑定