Laravel 5.6 страница не найдена, когда модель находится в подсказке типа для параметра - PullRequest
0 голосов
/ 24 августа 2018

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

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

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' ) );
}

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

1 Ответ

0 голосов
/ 25 августа 2018

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

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

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

...