Маршрут перекрывает другой маршрут
На сайте должен быть маршрут для просмотра списка всех товаров, а также маршрут для просмотра отдельного товара, и маршруты для просмотра разных страниц.
Route::get('/', 'HomeController@index')->name('site.home');
Route::get('/contacts', 'ContactController@index')->name('site.contacts');
Route::group(['prefix' => 'products'], function(){
Route::get('/electromobili', 'CarController@index')->name('site.electro');//список всех товаров
Route::get('/diesel', 'CarController@index')->name('site.diesel');//список всех товаров
Route::get('/{mark}', 'CarController@show')->name('site.show');//отдельный товар
});
CarController
class CarController extends Controller {
public function index(Request $request) {
return view('site.cars.index');
}
public function show(Request $request, Mark $mark){
return view('site.cars.show');
}
}
Если перейти по ссылке /products/diesel то срабатывает маршрут CarController@index site.diesel как и должно быть,
а если перейти по ссылке /products/electromobili то выдаёт ошибку 404, и выполняется такой запрос
select * from `marks` where `id` = 'electromobili' limit 1
маршрут site.show , а по идее должен был выполниться маршрут site.electro
тоже самое, если перейти по ссылке /products/nissan то выдаёт ошибку 404, и выполняется такой запрос
select * from `marks` where `id` = 'nissan' limit 1
маршрут site.show, хотя такая марка есть nissan в базе.
таблица marks
id, name, alias
nissan прописан в поле alias.
Почему выдаёт эту ошибку и как правильно обрабатывать показ марок списком (index) и на отдельной странице (show)?
если в маршрут добавить имя колонки alias
Route::get('/{mark:alias}', 'CarController@show')->name('site.show');
то ссылка /products/electromobili всё-равно выдаёт ошибку 404,
но ссылка /products/nissan уже не выдаёт ошибку.
Подскажите, как нужно сделать, чтобы работала ссылка /products/electromobili ?
Route::group(['prefix' => 'products'], function(){
Route::get('/{category:alias}', 'CarController@index')->name('site.electromobili');
Route::get('/{mark:alias}', 'CarController@show')->name('site.show');
});
CarController
public function index(Request $request, Category $category) {
dump($category);
$generalData = $this->general->getData();
return view('site.cars.index')
->with($generalData);
}
public function show(Request $request, Mark $mark){
dump($mark);
return view('site.cars.show');
}
если добавить такой маршрут /{category:alias}, тогда не срабатывает маршрут {mark:alias}, т.к. в категориях и марках может быть одинаковые значения в колонке alias
т.е. если перейти по ссылке /products/nissan, то сработает действие index ({category:alias}), а нужно чтобы сработало действие show