Можно ли передать идентификатор маршруту в laravel, если нет модели с этим идентификатором, используя отсутствующую функцию?

Я использую привязку модели в маршруте и хочу обработать случай, когда идентификатор отсутствует в базе данных. Согласно документации, вы можете использовать отсутствующий метод , чтобы справиться с этой возможностью. Можно ли получить идентификатор, который был передан на маршрут?

Используя следующий код, я не могу найти атрибут с идентификатором при тестировании маршрута /document/idThatDoesNotExist:

Route::middleware(['throttle:document'])
    ->resource('document', DocumentController::class)
    ->only(['show'])
    ->missing(function (Request $request) {
    $request->dd();
});

В качестве временного решения я использовал следующий фрагмент кода для получения идентификатора, но мне интересно, есть ли лучший способ:

$document_id = preg_replace("/.*/document/(.*)/", "$1", $request->getRequestUri());

🤔 А знаете ли вы, что...
PHP является интерпретируемым языком программирования.


53
1

Ответ:

Решено

вы можете извлечь значения параметров маршрута из объекта $request, используя метод route('param_name', 'default_value'), в вашем случае:

Route::middleware(['throttle:document'])
    ->resource('document', DocumentController::class)
    ->only(['show'])
    ->missing(function (Request $request) {
        dd($request->route('document'));
    });