Laravel 5.6 не найдена страница, когда модель находится в подсказке типа для параметра

У меня есть способ показывать изображения, когда изображение не найдено в файловой системе, оно должно возвращать ненайденное изображение. Все это работает нормально, пока я не укажу тип параметра в методе.

Это не работает, когда мой код выглядит так:

public function showImage( LibraryFile $image, string $name ): BinaryFileResponse {
    if ( ( $image->thumbnails[ $name ] ?? null ) && File::exists( $image->thumbnails[ $name ] ) ) {
        return response()
            ->file( $image->thumbnails[ $name ] );

    }

    return response()
        ->file( public_path( 'images/no-image-available.png' ) );
}

Это работает так:

public function showImage( $image, string $name ): BinaryFileResponse {
    if ( ( $image->thumbnails[ $name ] ?? null ) && File::exists( $image->thumbnails[ $name ] ) ) {
        return response()
            ->file( $image->thumbnails[ $name ] );

    }

    return response()
        ->file( public_path( 'images/no-image-available.png' ) );
}

Я думаю, это, вероятно, потому, что модель не может быть найдена, и поэтому Laravel решает бросить 404. Есть ли способ изменить это?

Стоит ли изучать 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-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
186
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны использовать привязку пользовательского разрешения в Привязка модели маршрута следующим образом:

Route::bind('image', function ($value) {
    return App\LibraryFile::find($image) ?? abort(response()
    ->file( public_path( 'images/no-image-available.png' )));
});

чтобы вернуть собственный ответ в случае, если модель не найдена

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