如何根据路径中注入的模型类型的类型将laravel路径引用到不同的api控制器?

问题描述 投票:1回答:1

我有一个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-第二个问题是:产品实例通过其slug注入主URL。我需要在两个子路径中注入产品实例。我该怎么办?

api conditional laravel-routing
1个回答
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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.