Как я могу отнести маршрут Laravel к различным контроллерам API, основываясь на типе модели, введенной в маршрут? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть маршрут 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-адрес его слагом.Мне нужно, чтобы экземпляр продукта вводился в оба под-маршрута.Как мне это сделать?

1 Ответ

0 голосов
/ 16 февраля 2019

Вы можете использовать маршрут привязки в 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();
    }
...