Метод `missing` у Laravel надає елегантний спосіб налаштування відповідей у разі, коли не вдається знайти модель. Замість стандартних сторінок 404 ви можете створювати значні редиректи або відповіді, які покращують користувацький досвід
Цей підхід особливо корисний для управління змінами URL, перейменуваннями продуктів або пропонуванням корисних рекомендацій, коли користувачі стикаються з відсутніми ресурсами
Route::get('/articles/{article:slug}', [ArticleController::class, 'show'])
->missing(function (Request $request) {
return redirect()->route('articles.index')
->with('message', 'Статтю не знайдено');
});
Ось практичний приклад зі смарт-редиректами:
// Маршрут для архіву статей
Route::get('/articles/{article:slug}', [ArticleController::class, 'show'])
->missing(function (Request $request) {
// Перевірка, чи статтю перемістили в архів
$archived = ArchivedArticle::where('original_slug', $request->route('article'))
->first();
if ($archived) {
return redirect()
->route('articles.archived', $archived->slug)
->with('info', 'Цю статтю переміщено в архів.');
}
return redirect()
->route('articles.index')
->with('info', 'Статтю не знайдено. Перегляньте наші останні публікації.');
});
Коли користувач намагається отримати доступ до переміщеної статті, його плавно перенаправляють:
// При доступі до /articles/old-article-slug
// Користувача перенаправляють на /articles/archived/old-article-slug
// З повідомленням: "Цю статтю переміщено в архів."
Метод `missing` перетворює неприємні 404-ситуації на корисні редиректи та інформативні повідомлення