From 622e7e6e8c704a8489c7bef5797b023fed62d183 Mon Sep 17 00:00:00 2001 From: rahmagustin Date: Fri, 13 Mar 2026 04:54:34 +0700 Subject: [PATCH] gambar kategori --- .../Admin/KategoriTpsController.php | 125 +++++++++--------- 1 file changed, 61 insertions(+), 64 deletions(-) diff --git a/app/Http/Controllers/Admin/KategoriTpsController.php b/app/Http/Controllers/Admin/KategoriTpsController.php index a7a9944..20fb704 100644 --- a/app/Http/Controllers/Admin/KategoriTpsController.php +++ b/app/Http/Controllers/Admin/KategoriTpsController.php @@ -3,129 +3,126 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; -use App\Models\KategoriTps; use Illuminate\Http\Request; +use App\Models\KategoriTps; +use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Validator; class KategoriTpsController extends Controller { + // Tampilkan data kategori public function index(Request $request) { - $title = 'Kategori TPS'; $search = $request->search; $kategori = KategoriTps::when($search, function ($query) use ($search) { $query->where('nama_kategori', 'like', '%' . $search . '%'); }) - ->orderBy('id_kategori_tps', 'desc') - ->paginate(10); + ->orderBy('id_kategori_tps', 'desc') + ->paginate(10); - return view('admin.kategori-tps.index', compact('title', 'kategori')); + return view('admin.kategori-tps.index', compact('kategori')); } + // Form tambah public function create() { - $title = 'Tambah Kategori TPS'; - return view('admin.kategori-tps.create', compact('title')); + return view('admin.kategori-tps.create'); } + // Simpan kategori public function store(Request $request) { - $data = $request->validate( - [ - 'nama_kategori' => 'required|string|max:100', - 'kepanjangan_kategori' => 'required|string|max:255', - 'deskripsi' => 'required|string', - 'foto_kategori' => 'required|image|mimes:jpg,jpeg,png|max:2048', - ], - [ - 'nama_kategori.required' => 'Nama kategori wajib diisi', - 'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi', - 'deskripsi.required' => 'Deskripsi kategori wajib diisi', - 'foto_kategori.required' => 'Foto kategori wajib diunggah', - 'foto_kategori.image' => 'File harus berupa gambar', - 'foto_kategori.mimes' => 'Format gambar harus JPG, JPEG, atau PNG', - 'foto_kategori.max' => 'Ukuran gambar maksimal 2 MB', - ] + $validator = Validator::make($request->all(), [ + 'nama_kategori' => 'required|string|max:100', + 'kepanjangan_kategori' => 'required|string|max:255', + 'deskripsi' => 'required|string', + 'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', + ], [ + 'nama_kategori.required' => 'Nama kategori wajib diisi', + 'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi', + 'deskripsi.required' => 'Deskripsi wajib diisi', + ]); + + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput(); + } + + $data = $request->only( + 'nama_kategori', + 'kepanjangan_kategori', + 'deskripsi' ); - // Upload foto ke public/assets/admin/images/kategori-tps + // Upload foto if ($request->hasFile('foto_kategori')) { - $file = $request->file('foto_kategori'); - $filename = strtolower(str_replace(' ', '_', $request->nama_kategori)) - . '_' . time() - . '.' . $file->getClientOriginalExtension(); - $file->move(public_path('assets/admin/images/kategori-tps'), $filename); - $data['foto_kategori'] = $filename; + $data['foto_kategori'] = $request->file('foto_kategori') + ->store('kategori-tps', 'public'); } KategoriTps::create($data); - return redirect() - ->route('admin.kategori.index') + return redirect()->route('admin.kategori.index') ->with('success', 'Kategori TPS berhasil ditambahkan'); } + // Form edit public function edit($id) { - $title = 'Edit Kategori TPS'; $kategori = KategoriTps::findOrFail($id); - return view('admin.kategori-tps.edit', compact('title', 'kategori')); + return view('admin.kategori-tps.edit', compact('kategori')); } + // Update kategori public function update(Request $request, $id) { $kategori = KategoriTps::findOrFail($id); - $data = $request->validate( - [ - 'nama_kategori' => 'required|string|max:100', - 'kepanjangan_kategori' => 'required|string|max:255', - 'deskripsi' => 'required|string', - 'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', - ], - [ - 'nama_kategori.required' => 'Nama kategori wajib diisi', - 'kepanjangan_kategori.required' => 'Kepanjangan kategori wajib diisi', - 'deskripsi.required' => 'Deskripsi kategori wajib diisi', - 'foto_kategori.image' => 'File harus berupa gambar', - 'foto_kategori.mimes' => 'Format gambar harus JPG, JPEG, atau PNG', - 'foto_kategori.max' => 'Ukuran gambar maksimal 2 MB', - ] + $validator = Validator::make($request->all(), [ + 'nama_kategori' => 'required|string|max:100', + 'kepanjangan_kategori' => 'required|string|max:255', + 'deskripsi' => 'required|string', + 'foto_kategori' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', + ]); + + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput(); + } + + $data = $request->only( + 'nama_kategori', + 'kepanjangan_kategori', + 'deskripsi' ); if ($request->hasFile('foto_kategori')) { - // Hapus foto lama jika ada - if ($kategori->foto_kategori && file_exists(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori))) { - unlink(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori)); + + if ($kategori->foto_kategori) { + Storage::disk('public')->delete($kategori->foto_kategori); } - $file = $request->file('foto_kategori'); - $filename = strtolower(str_replace(' ', '_', $request->nama_kategori)) - . '_' . time() - . '.' . $file->getClientOriginalExtension(); - $file->move(public_path('assets/admin/images/kategori-tps'), $filename); - $data['foto_kategori'] = $filename; + $data['foto_kategori'] = $request->file('foto_kategori') + ->store('kategori-tps', 'public'); } $kategori->update($data); - return redirect() - ->route('admin.kategori.index') + return redirect()->route('admin.kategori.index') ->with('success', 'Kategori TPS berhasil diperbarui'); } + // Hapus kategori public function destroy($id) { $kategori = KategoriTps::findOrFail($id); - if ($kategori->foto_kategori && file_exists(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori))) { - unlink(public_path('assets/admin/images/kategori-tps/' . $kategori->foto_kategori)); + if ($kategori->foto_kategori) { + Storage::disk('public')->delete($kategori->foto_kategori); } $kategori->delete(); - return redirect() - ->route('admin.kategori.index') + return redirect()->route('admin.kategori.index') ->with('success', 'Kategori TPS berhasil dihapus'); } }