【问题标题】:How can I refer a laravel route to different api controllers based on type of the model type injected in the route?如何根据路由中注入的模型类型的类型将 laravel 路由引用到不同的 api 控制器?
【发布时间】:2019-07-10 06:09:23
【问题描述】:

我有一个 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】:

    您可以在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();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-23
      • 2011-01-29
      • 2020-02-01
      • 2019-11-27
      • 2015-01-26
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多