관리-도구
편집 파일: ServiceController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Service; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Intervention\Image\ImageManager; class ServiceController extends Controller { public function index() { $services = Service::all(); return view('admin.service', compact('services')); } public function store(Request $request) { try { $validateData = $request->validate([ 'title' => 'required|string|max:255', 'description' => 'required|string', 'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg', ]); $manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver()); // Upload Image $imageFile = $request->file('image'); $filename = Str::uuid() . '.' . $imageFile->getClientOriginalExtension(); $image = $manager->read($imageFile)->resize(800, 600, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); $path = 'services/' . $filename; Storage::disk('public')->put($path, (string) $image->toJpeg(85)); // Save to DB Service::create([ 'title' => $validateData['title'], 'description' => $validateData['description'], 'image' => $path, ]); return redirect()->route('admin-service.index')->with('success', 'Service added successfully'); } catch (\Exception $e) { Log::error("Add Service Error: " . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while adding service'); } } public function update(Request $request, $id) { try { $service = Service::findOrFail($id); $validateData = $request->validate([ 'title' => 'required|string|max:255', 'description' => 'required|string', 'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg', ]); $service->title = $validateData['title']; $service->description = $validateData['description']; $manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver()); // Image update if ($request->hasFile('image')) { $imageFile = $request->file('image'); $filename = Str::uuid() . '.' . $imageFile->getClientOriginalExtension(); $image = $manager->read($imageFile)->resize(800, 600, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); $path = 'services/' . $filename; Storage::disk('public')->put($path, (string) $image->toJpeg(85)); // Delete old image if ($service->image) { Storage::disk('public')->delete($service->image); } $service->image = $path; } $service->save(); return redirect()->route('admin-service.index')->with('message', 'Service updated successfully'); } catch (\Exception $e) { Log::error("Service Update Error: " . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while updating service'); } } public function destroy($id) { try { $service = Service::findOrFail($id); if ($service->image) { Storage::disk('public')->delete($service->image); } $service->delete(); return redirect()->route('admin-service.index')->with('success', 'Service deleted successfully'); } catch (\Exception $e) { Log::error("Delete Service Error: " . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while deleting service'); } } }