Laravel嵌套资源的作用域嵌套资源功能不会检查子模型是否属于父模型



我正在开发Laravel 8应用程序,在该应用程序中我嵌套了资源URL。

根据我的路线定义,一个用户可以有多个位置,每个位置可以有多条内容。

Route::resource('locations', LocationController::class);
Route::resource('locations.contents', ContentController::class);

所以当我打开类似的URL时

/位置/3/内容/1

它永远不会检查id为1的内容是否属于其父级(即id为3的位置(。

我原以为,它应该通过Laravel框架返回404页,因为内容模型(id为1(实际上属于位置模型(id 2(

所以所有

/位置/1/内容/1-应该工作

/位置/3/内容/1-不应该工作。

有人能帮我吗?

通过为路由指定作用域选项,它开始工作。

我必须设置作用域,即使它应该是由框架自动设置的。

Laravel文件中提到。

路线应为

Route::resource('locations', LocationController::class);
Route::resource('locations.contents', ContentController::class)->scoped([
'locations' => 'location:id',
'contents' => 'content:id',
]);

最新更新