我有一个apiResource路由,其URL包含一个工厂和一个产品模型。 根据产品类型,我需要两个不同的控制器。我还需要将工厂实例和产品实例注入两个控制器。像这样:
Route::apiResource('factories/{factory}/products', function(Product $product) {
if ($product->type == 'typeA') {
Route::apiResource('factories/{factory}/typeAs', 'TypeAController')
}
if ($product->type == 'typeB') {
Route::apiResource('factories/{factory}/typeBs', 'TypeBController')
}
}
1-第一个问题是正确的方法是什么,如何定义路线? 2-第二个问题是:产品实例是通过它的插件注入到主URL中的。我需要在两个子路径中注入产品实例。我该怎么办?
答案 0 :(得分:0)
您可以在RouteServiceProvider
中使用绑定路由。当您的路线具有factory
参数时,它将返回具有product_id
的工厂模型:
public function boot()
{
Route::bind('factory', function () {
$product_type = \App\Models\Factory::where('{factory}', request()->type);
return $product_type->firstOrFail();
});
parent::boot();
}