Perintah <img> merupakan tag html untuk menampilkan gambar ke user, namun masalahnya gambar tadi berada dimana? atau gambar tadi kita simpan dimana?. Laravel sendiri menyediakan fitur untuk mengatasi gambar ini yang disebut storage link. Dimana gambar disimpan dan dipanggil menggunakan storage ini.
Membuat Link Storage
Anda perlu membuat perintah artisan untuk membuat storage link ini. Berikut perintahnya:
php artisan storage:link
Ketikkan perintah diatas di dalam terminal vsCode untuk membuat storage laravel. Selanjutnya buka folder storage/app/public kemudian buat sebuah folder dengan nama "images". Kita akan menyimpan gambar ke dalam folder ini. Siapkan sebuah gambar terlebih dahulu. beri nama gambar tersebut dengan nama yang sama di recod foto yang ada di tabel kegiatan. ( Disini saya memberi nama gambar dengan nama olahraga.png). selanjutnya Pastekan gambar ke dalam folder storage/app/public/images.
Mengakses Gambar
Sekarang kita akan menampilkan gambar ke dalam tabel. Masuk ke folder view dan buka kegiatan.blade.php. silahkan rubah script untuk gambar seperti berikut:
....<td>{{ $kegiatan->judul ?? }} </td><td><img src="{{ asset('storage/images/' . $kegiatan->foto) }}" alt="Foto"style="max-width: 100px;"></td><td><a href="{{ route('kegiatan.edit', $kegiatan->id_kegiatan) }}"class="btn btn-warning btn-sm me-2"><i class="bi bi-pencil-square"></i>Edit</a><button type="submit" class="btn btn-danger btn-sm"><i class="bi bi-trash"></i> Hapus</button></td>....
<div class="mb-3"><label for="foto" class="form-label"><i class="fas fa-image"></i> Foto</label><input type="file" class="form-control" name="foto" multiple></div><button type="submit" class="btn btn-primary">
<form action="{{ isset($kegiatan) ? route('kegiatan.update', $kegiatan->id_kegiatan) : route('kegiatan.store') }}"method="POST" enctype="multipart/form-data">@csrf
public function store(Request $request){$data = $request->only(['waktu', 'id_tema', 'judul', 'keterangan']);if ($request->hasFile('foto')) {$file = $request->file('foto');$filename = time() . '_' . $file->getClientOriginalName();// simpan ke storage/app/public/images$file->storeAs('images', $filename, 'public');$data['foto'] = $filename;}KegiatanModel::create($data);return redirect()->route('kegiatan.index');}
public function update(Request $request, $id){$kegiatan = KegiatanModel::findOrFail($id);// Data selain foto$data = $request->only(['waktu', 'id_tema', 'judul', 'keterangan']);if ($request->hasFile('foto')) {// Hapus foto lama kalau adaif ($kegiatan->foto && \Storage::disk('public')->exists('images/' . $kegiatan->foto)) {\Storage::disk('public')->delete('images/' . $kegiatan->foto);}// Simpan foto baru$file = $request->file('foto');$filename = time() . '_' . $file->getClientOriginalName();$file->storeAs('images', $filename, 'public');$data['foto'] = $filename;}$kegiatan->update($data);return redirect()->route('kegiatan.index')->with('success', 'Kegiatan berhasil diupdate');}
public function destroy($id){$kegiatan = KegiatanModel::findOrFail($id);//hapus foto dari folderif ($kegiatan->foto && \Storage::disk('public')->exists('images/' . $kegiatan->foto)) {\Storage::disk('public')->delete('images/' . $kegiatan->foto);}$kegiatan->delete();return redirect()->route('kegiatan.index');}