У меня есть несколько маршрутов с привязкой модели маршрута, которые направляют пользователей из Магазин > Категория > Продукт . Ссылки на маршрут работают нормально.
Но если пользователь добавляет в URL значение мусора, Laravel не выдает ошибку 404. Как вызвать ошибку 404, если пользователь добавляет в URL какой-либо дополнительный символ?
Маршрут
Route::get('/{shop_url}/{category_url}/{product_url}/buy', 'Controller@buy')->name('buy')->where(['shop_url', 'category_url', 'product_url' => '[\w\d\-]+(.*)']);
Route::get('/{shop_url}/{category_url}', 'Controller@view')->name('view')->where(['shop_url','category_url' => '[\w\d\-]+(.*)']);
Route::get('/{shop_url}', 'Controller@shop')->name('shop')->where('shop_url', '[\w\d\-]+(.*)');
Контроллер
public function shop($shop_url)
{
$shop = Shop::where('shop_url', $shop_url)->firstorfail();
return view ('shop', compact('shop'));
}
public function view($shop_url, $category_url)
{
$shop = Shop::where('shop_url', $shop_url)->firstorfail();
$category= Category::firstorfail();
return view ('shop', compact('shop', 'category'));
}
public function buy($shop_url, $category_url, $product_url)
{
$shop = Shop::where('shop_url', $shop_url)->firstorfail();
$category= Category::where('category_url', $category_url)->firstorfail();
$product = Product::firstorfail();
return view ('shop', compact('shop', 'category', 'product'));
}
Здесь domain.com/shop-ca/clothing
работает, и если пользователь вводит domain.com/shop-ca/clothes
, он также отображает ту же страницу. Здесь я хочу, чтобы он отображал 404. Как бы я это сделал?