Не тільки 404: розумні відповіді з Route Binding у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 13 лютого, 2025
Вам коли-небудь доводилося стикатися з неприємностями 404 під час навігації по сайту? У цій статті ми розглянемо, як метод missing у Laravel дозволяє перетворювати такі ситуації на корисні редиректи та інформативні повідомлення, що покращують досвід користувачів
Метод `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-ситуації на корисні редиректи та інформативні повідомлення