嵌套资源:缺少必需参数 (laravel)
Nested Resource : Missing required parameters (laravel)
我对 Laravel 很陌生,老实说 - 这是一个很棒的框架。然而,我对一些嵌套资源有点困惑——包括对它们进行增删改查。
对于我正在使用的路线
Route::resource('startups','StartupsController');
Route::resource('startups.usecases','UsecasesController');
php artisan route:list
| | GET|HEAD | admin/startups | admin.startups.index | App\Http\Controllers\StartupsController@index | web,admin,auth:admin |
| | POST | admin/startups | admin.startups.store | App\Http\Controllers\StartupsController@store | web,admin,auth:admin |
| | GET|HEAD | admin/startups/create | admin.startups.create | App\Http\Controllers\StartupsController@create | web,admin,auth:admin |
| | DELETE | admin/startups/{startup} | admin.startups.destroy | App\Http\Controllers\StartupsController@destroy | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup} | admin.startups.show | App\Http\Controllers\StartupsController@show | web,admin,auth:admin |
| | PUT|PATCH | admin/startups/{startup} | admin.startups.update | App\Http\Controllers\StartupsController@update | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/edit | admin.startups.edit | App\Http\Controllers\StartupsController@edit | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases | admin.startups.usecases.index | App\Http\Controllers\UsecasesController@index | web,admin,auth:admin |
| | POST | admin/startups/{startup}/usecases | admin.startups.usecases.store | App\Http\Controllers\UsecasesController@store | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/create | admin.startups.usecases.create | App\Http\Controllers\UsecasesController@create | web,admin,auth:admin |
| | DELETE | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.destroy | App\Http\Controllers\UsecasesController@destroy | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.show | App\Http\Controllers\UsecasesController@show | web,admin,auth:admin |
| | PUT|PATCH | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.update | App\Http\Controllers\UsecasesController@update | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/{usecase}/edit | admin.startups.usecases.edit | App\Http\Controllers\UsecasesController@edit | web,admin,auth:admin |
对于 parent,这里称为 "startups",一切都很好,我可以 CRUD 一切都很好。
对于child,这里调用"usecases",index、create、store都可以。当我尝试将 link 添加到我的模板中的编辑、删除或显示时,我开始收到: [Route: admin.startups.usecases.destroy] [URI: admin/startups/{ 缺少必需的参数startup}/usecases/{usecase}].
A link 在我的索引 blade 文件中:
<li><a href="{{ route('admin.startups.usecases.show',$startup->id, $usecase->id) }}">Show</a></li>
returns那个错误。
在我的 UsecasesController 中
public function show($startup_id, $usecase_id)
{
$startups = $startup_id;
$usecase = Usecase::find($usecase_id);
return view('admin.startups.usecases.show')
->with('usecase', $usecase)
->with('startups', $startups);
}
TLDR:我可以访问和增删改查 parent、"startups" 上的所有内容。我可以为 child 创建和存储,但不能为 "usecases".
编辑、显示或删除
感谢您的帮助。
您需要以数组形式传递参数:
route('admin.startups.usecases.show', [$startup->id, $usecase->id])
而 show()
方法将如下所示:
public function show($startup, $usecase)
{
....
我对 Laravel 很陌生,老实说 - 这是一个很棒的框架。然而,我对一些嵌套资源有点困惑——包括对它们进行增删改查。
对于我正在使用的路线
Route::resource('startups','StartupsController');
Route::resource('startups.usecases','UsecasesController');
php artisan route:list
| | GET|HEAD | admin/startups | admin.startups.index | App\Http\Controllers\StartupsController@index | web,admin,auth:admin |
| | POST | admin/startups | admin.startups.store | App\Http\Controllers\StartupsController@store | web,admin,auth:admin |
| | GET|HEAD | admin/startups/create | admin.startups.create | App\Http\Controllers\StartupsController@create | web,admin,auth:admin |
| | DELETE | admin/startups/{startup} | admin.startups.destroy | App\Http\Controllers\StartupsController@destroy | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup} | admin.startups.show | App\Http\Controllers\StartupsController@show | web,admin,auth:admin |
| | PUT|PATCH | admin/startups/{startup} | admin.startups.update | App\Http\Controllers\StartupsController@update | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/edit | admin.startups.edit | App\Http\Controllers\StartupsController@edit | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases | admin.startups.usecases.index | App\Http\Controllers\UsecasesController@index | web,admin,auth:admin |
| | POST | admin/startups/{startup}/usecases | admin.startups.usecases.store | App\Http\Controllers\UsecasesController@store | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/create | admin.startups.usecases.create | App\Http\Controllers\UsecasesController@create | web,admin,auth:admin |
| | DELETE | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.destroy | App\Http\Controllers\UsecasesController@destroy | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.show | App\Http\Controllers\UsecasesController@show | web,admin,auth:admin |
| | PUT|PATCH | admin/startups/{startup}/usecases/{usecase} | admin.startups.usecases.update | App\Http\Controllers\UsecasesController@update | web,admin,auth:admin |
| | GET|HEAD | admin/startups/{startup}/usecases/{usecase}/edit | admin.startups.usecases.edit | App\Http\Controllers\UsecasesController@edit | web,admin,auth:admin |
对于 parent,这里称为 "startups",一切都很好,我可以 CRUD 一切都很好。
对于child,这里调用"usecases",index、create、store都可以。当我尝试将 link 添加到我的模板中的编辑、删除或显示时,我开始收到: [Route: admin.startups.usecases.destroy] [URI: admin/startups/{ 缺少必需的参数startup}/usecases/{usecase}].
A link 在我的索引 blade 文件中:
<li><a href="{{ route('admin.startups.usecases.show',$startup->id, $usecase->id) }}">Show</a></li>
returns那个错误。
在我的 UsecasesController 中
public function show($startup_id, $usecase_id)
{
$startups = $startup_id;
$usecase = Usecase::find($usecase_id);
return view('admin.startups.usecases.show')
->with('usecase', $usecase)
->with('startups', $startups);
}
TLDR:我可以访问和增删改查 parent、"startups" 上的所有内容。我可以为 child 创建和存储,但不能为 "usecases".
编辑、显示或删除感谢您的帮助。
您需要以数组形式传递参数:
route('admin.startups.usecases.show', [$startup->id, $usecase->id])
而 show()
方法将如下所示:
public function show($startup, $usecase)
{
....