refactor: replace File facade with Storage facade for file handling and update image paths
This commit is contained in:
parent
a21939e362
commit
192af00f2f
|
|
@ -7,8 +7,7 @@
|
|||
use App\Models\PaketFoto;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class FotoController extends Controller
|
||||
{
|
||||
|
|
@ -61,9 +60,7 @@ public function store(Request $request)
|
|||
if ($request->hasFile('foto')) {
|
||||
$file = $request->file('foto');
|
||||
$filename = time() . '_' . $file->getClientOriginalName();
|
||||
// Simpan langsung ke folder public untuk asset()
|
||||
$file->move(public_path('img/foto'), $filename);
|
||||
$path = 'img/foto/' . $filename;
|
||||
$path = $file->storeAs('img/foto', $filename, 'public');
|
||||
}
|
||||
|
||||
PaketFoto::create([
|
||||
|
|
@ -114,15 +111,14 @@ public function update(Request $request, string $id)
|
|||
$data = $request->only(['nama', 'harga', 'durasi', 'deskripsi']);
|
||||
|
||||
if ($request->hasFile('foto')) {
|
||||
// Hapus file lama jika ada foto baru yang diunggah
|
||||
if ($paket->foto) {
|
||||
File::delete(public_path($paket->foto));
|
||||
Storage::disk('public')->delete($paket->foto);
|
||||
}
|
||||
|
||||
$file = $request->file('foto');
|
||||
$filename = time() . '_' . $file->getClientOriginalName();
|
||||
$file->move(public_path('img/foto'), $filename);
|
||||
$data['foto'] = 'img/foto/' . $filename;
|
||||
$path = $file->storeAs('img/foto', $filename, 'public');
|
||||
$data['foto'] = $path;
|
||||
}
|
||||
|
||||
$paket->update($data);
|
||||
|
|
@ -135,12 +131,9 @@ public function destroy(string $id)
|
|||
// Cari data berdasarkan primary key id_paket
|
||||
$paket = PaketFoto::where('id_paket', $id)->firstOrFail();
|
||||
|
||||
// 1. Cek dan hapus file foto dari folder public
|
||||
if ($paket->foto) {
|
||||
File::delete(public_path($paket->foto));
|
||||
Storage::disk('public')->delete($paket->foto);
|
||||
}
|
||||
|
||||
// 2. Hapus data dari database
|
||||
$paket->delete();
|
||||
|
||||
return redirect()->back()->with('success', 'Paket foto dan filenya berhasil dihapus!');
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@
|
|||
<td style="width: 12%" class="text-center">Rp
|
||||
{{ number_format($f->harga, 0, ',', '.') }}</td>
|
||||
<td style="width:10%" class="text-center">
|
||||
<img src="{{ asset($f->foto) }}" alt="Foto Produk" class="rounded"
|
||||
<img src="{{ asset('storage/' . $f->foto) }}" alt="Foto Produk" class="rounded"
|
||||
style="width: 50px; height: 50px; object-fit: cover;">
|
||||
</td>
|
||||
<td class="col-auto text-center">
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@
|
|||
|
||||
<div class="mb-2">
|
||||
<label class="form-label">Nama Paket</label>
|
||||
<input type="text" class="form-control @error('nama') is-invalid @enderror"
|
||||
style="font-size: 14px;" placeholder="Masukkan Nama Paket"
|
||||
value="{{ old('nama') }}">
|
||||
<input type="text" name="nama"
|
||||
class="form-control @error('nama') is-invalid @enderror" style="font-size: 14px;"
|
||||
placeholder="Masukkan Nama Paket" value="{{ old('nama') }}">
|
||||
@error('nama')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
|
|
@ -27,12 +27,13 @@
|
|||
<div class="col-12 col-md-6">
|
||||
<div class="mb-2">
|
||||
<label class="form-label">Harga Paket</label>
|
||||
<input type="number" class="form-control @error('nama') is-invalid @enderror"
|
||||
<input type="number" name="harga"
|
||||
class="form-control @error('harga') is-invalid @enderror"
|
||||
style="font-size: 14px;"
|
||||
placeholder="Harga Paket"value="{{ old('nama') }}">
|
||||
placeholder="Harga Paket"value="{{ old('harga') }}">
|
||||
<p class="mb-0"><small class="text-muted mb-0">Dalam Rupiah</small>
|
||||
</p>
|
||||
@error('nama')
|
||||
@error('harga')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
|
||||
|
|
@ -42,12 +43,13 @@
|
|||
<div class="col-12 col-md-6">
|
||||
<div class="mb-2">
|
||||
<label class="form-label">Durasi</label>
|
||||
<input type="number" class="form-control @error('nama') is-invalid @enderror"
|
||||
<input type="number" name="durasi"
|
||||
class="form-control @error('durasi') is-invalid @enderror"
|
||||
style="font-size: 14px;"
|
||||
placeholder="Durasi Paket"value="{{ old('nama') }}">
|
||||
placeholder="Durasi Paket"value="{{ old('durasi') }}">
|
||||
<p class="mb-0"><small class="text-muted mb-0">Dalam Menit</small>
|
||||
</p>
|
||||
@error('nama')
|
||||
@error('durasi')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
|
||||
|
|
@ -57,8 +59,8 @@
|
|||
|
||||
<div class="mb-2">
|
||||
<label class="form-label">Deskripsi Paket</label>
|
||||
<textarea class="form-control @error('nama') is-invalid @enderror" rows="5" style="font-size: 14px;"
|
||||
placeholder="Masukkan Deskripsi Paket">{{ old('deskripsi') }}</textarea>
|
||||
<textarea name="deskripsi" class="form-control @error('deskripsi') is-invalid @enderror" rows="5"
|
||||
style="font-size: 14px;" placeholder="Masukkan Deskripsi Paket">{{ old('deskripsi') }}</textarea>
|
||||
@error('deskripsi')
|
||||
<div class="invalid-feedback">{{ $message }}</div>
|
||||
@enderror
|
||||
|
|
|
|||
|
|
@ -100,8 +100,8 @@ class="text-center text-muted d-none">
|
|||
sini</p>
|
||||
</div>
|
||||
|
||||
<img id="editImgPreview{{ $f->id_paket }}" src="{{ asset($f->foto) }}"
|
||||
class="img-fluid w-100 h-100"
|
||||
<img id="editImgPreview{{ $f->id_paket }}"
|
||||
src="{{ asset('storage/' . $f->foto) }}" class="img-fluid w-100 h-100"
|
||||
style="object-fit: cover; position: absolute; top: 0; left: 0;">
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
<div class="col-12 col-sm-4">
|
||||
@if ($f->foto)
|
||||
{{-- Langsung img tanpa wrapper --}}
|
||||
<img src="{{ asset($f->foto) }}" class="custom-img-box-foto"
|
||||
onclick="showImage('{{ asset($f->foto) }}')">
|
||||
<img src="{{ asset('storage/' . $f->foto) }}" class="custom-img-box-foto"
|
||||
onclick="showImage('{{ asset('storage/' . $f->foto) }}')">
|
||||
@else
|
||||
{{-- Div pengganti kalau tidak ada foto --}}
|
||||
<div
|
||||
|
|
|
|||
Loading…
Reference in New Issue