Как сохранить каждый запрос 404 в БД

Я пытаюсь сохранить все 404 запроса в виде строки в базу данных. Но не могу понять, как это сделать. Например, я посетил сайт example.com/demo, но на сайте example.com демо-версии нет. В этой ситуации мне нужно добавить «демо» в таблицуmissing_pages. Я только что создал контроллер для этого. Но не могу справиться с web.php, нужно ли мне делать это с провайдерами? промежуточное ПО? Ничего не могу сделать.

public function test($slug)
{
    if (empty(MissingPage::where('slug', $slug)->get())) {
        $mp = new MissingPage();
        $mp->slug = $slug;
        $mp->count = 1;
    }
    else {
        $mp = MissingPage::where('slug', $slug)->first();
        $mp->increment('count');
    }
}

Что мне делать в web.php? Есть идеи? Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
82
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добавить резервный маршрут, добавить логику для сохранения неудачного запроса в базе данных, а затем вернуть ответ 404. Например, маршрут может выглядеть так:

Route::fallback('RouteNotFoundController@store')

Тогда в вашем контроллере логика будет примерно такой:

public function store(Request $request)
{
    // Save request to database as required

    abort(404)
}

Добавление вызова abort вызовет исключение и отобразит для вас ответ 404.

Я согласен со всем, что сказал @George, плюс не забывайте, что для того, чтобы маршрут fallback работал, он должен быть вашим последним маршрутом, определенным в web.php. Вот документы: laravel.com/docs/master/routing#fallback-маршруты

nakov 09.04.2019 13:02

Спасибо. Я только что выучил запасной маршрут. Мне это нравится. Пытаюсь прямо сейчас.

Ali Özen 09.04.2019 13:05

Вы можете закодировать в файле app/Exceptions/Handler.php:

public function render($request, Exception $e)
{

    switch ($e->getStatusCode()) {
        // not found
        case 404:
            //Save to DB
            ...
            break;

        // internal error
        case 500:
            //Save to DB
            ...
            break;

        default:
            break;
    }
    return parent::render($request, $e);
}

Другие вопросы по теме