#php #database #laravel
Вопрос:
Когда я загружаю изображение, оно устанавливается в виде случайных чисел, таких как //15215653352.png. Но вместо этого у меня есть мои изображения , которые должны быть точными,и это означает,что у меня есть папка, в которой упорядочен набор изображений(digital_1.png, digital_2.png, digital_3.png…)
##Папка с изображениями находится в открытом доступе под названием imagg##
Внутри фабрики продуктов я использую это : 'image' => 'digital_'.$this->faker->unique()->numberBetween(1,28).'.png',
Чтобы добавить картинку, у меня есть этот код :
$imageName = Carbon::now()->timestamp.'.'. $this->image->extension();
$this->image->storeAs('imagg',$imageName,'public');
$product->image = $imageName;
В items-component.blade.php:
@foreach ($products as $product)
<!-- grid item #1 -->
<a href="{{route('product.details',$product->slug)}}">
<div id="TEST" class="activities-grid-item bla" style=" background-image: url({{asset('imagg')}}/{{$product->image}}" >
<h1 class="activities-h1">
.
.
.
</a>
$endforeach
в filesystem.php:
'root' => storage_path('app'),
Таким образом , изображения не могут отображаться с этими случайными числами, но они должны иметь имя suc, которое имеет digital_x.png (в то время как x является переменной от 1 до 28 и существует в папке imagg).
Комментарии:
1. вы можете подсчитать количество изображений в каталоге и просто 1 для имени.
2. он должен быть отображен в цифровом виде_
Ответ №1:
Это должно сработать.
try {
$dir = 'folder/to_the_images/'; // path to the images
if (is_dir($dir)) {
$images = glob($dir . '{*.jpg, *.JPG, *.jpeg}');
$imageName = 'digital_' . count($images) 1 . '.' . $this->image->extension();
$this->image->storeAs('imagg', $imageName, 'public');
$product->image = $imageName;
}
} catch (Exception $exception) {
die('saving images failed ' . $exception->getMessage());
}