Прежде всего, он будет чувствовать себя более естественно иметь маршрут вроде следующего:
Route::get('{product}/{color}', '[email protected]');
и разрешить product
по маршруту связывания, и просто использовать параметр color
в методе контроллера непосредственно, чтобы принести например, список синих туфель.
Но давайте предположим, что по какой-то причине это требование. Я бы сделать свой маршрут немного более четко, чтобы начать с:
Route::get('{color}/{product}', '[email protected]');
Затем в boot
методе RouteServiceProvider.php
, я хотел бы добавить что-то вроде этого:
Route::bind('product', function ($slug, $route) {
$color = $route->parameter('color');
return Product::where([
'slug' => $slug,
'color' => $color,
])->first() ?? abort(404);
});
first
здесь важно, потому что при разрешении таких моделей маршрутов вы действительно хотите вернуть одну модель.
Вот почему я думаю, что это не имеет большого смысла, поскольку то, что вы хотите, вероятно, является списком продуктов определенного цвета, а не только одного.
В любом случае, я пришел к этому вопросу, ища способ достичь того, что я продемонстрировал выше, поэтому, надеюсь, это поможет кому-то еще.
Я изменил вопрос, чтобы быть более явным. – Fusion