Laravel Web.php使用slug而不是ID的多参数路由

55ooxyrt  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(61)

我想显示这样的URL
http://localhost/rumah-subsidi/disewa/area/condet
这是我的web.php路由

Route::get('/{subCategory:slug}/{type:slug}/area/{complex:slug}'
[ComplexController::class,'index'])->name('home.complex');

字符串
这是控制器

public function index(SubCategory $subCategory,Type $type,Complex $complex){
    dd($complex);
}


如果我使用“ID”作为主参数,那么它就没有问题。
http://localhost/4/2/area/31
这一个工作正常。每当我变成鼻涕虫它不工作,并得到这个以下错误
调用未定义的方法App\Models\SubCategory::types()
奇怪的是,我使用了类似{model:field}的东西,如果用于单数,它可以工作。但是对于复数,它不起作用

py49o6xq

py49o6xq1#

Laravel正在定义绑定的作用域,当你这样做的时候:
“当使用自定义键控隐式绑定作为nested路由参数时,Laravel将自动将查询范围限定为通过其父模型使用约定猜测父模型上的关系名称来检索nested模型”
您可以在路由定义中禁用此功能:

Route::get('/{subCategory:slug}/{type:slug}/area/{complex:slug}', [ComplexController::class,'index'])
    ->withoutScopedBindings()
    ->name('home.complex');

字符串
Laravel 10.x扩展-路由-隐式模型绑定-自定义键和范围-withoutScopedBindings

相关问题