У меня есть способ показывать изображения, когда изображение не найдено в файловой системе, оно должно возвращать ненайденное изображение. Все это работает нормально, пока я не укажу тип параметра в методе.
Это не работает, когда мой код выглядит так:
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. Есть ли способ изменить это?






Вы должны использовать привязку пользовательского разрешения в Привязка модели маршрута следующим образом:
Route::bind('image', function ($value) {
return App\LibraryFile::find($image) ?? abort(response()
->file( public_path( 'images/no-image-available.png' )));
});
чтобы вернуть собственный ответ в случае, если модель не найдена