관리-도구
편집 파일: AboutController.php
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\About; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use Intervention\Image\ImageManager; use Illuminate\Support\Str; class AboutController extends Controller { public function index() { $abouts = About::all(); return view('admin.about', compact('abouts')); } public function update(Request $request, $id) { try { $service = About::findOrFail($id); // Validation rules $rules = [ 'title' => 'required|string', 'description' => 'required|string', 'theme' => 'required|string', ]; if ($request->theme == 4) { // Accept video files instead of images $rules['image'] = 'required|file|mimes:mp4,mov,avi,wmv|max:51200'; // max 50MB } else { // Normal image validation $rules['image'] = 'nullable|file|image|mimes:jpeg,png,jpg,gif,svg|max:5120'; // max 5MB } $validateData = $request->validate($rules); // Save common fields $service->title = $validateData['title']; $service->description = $validateData['description']; $service->theme = $validateData['theme']; if ($request->hasFile('image')) { $file = $request->file('image'); $filename = Str::uuid() . '.' . $file->getClientOriginalExtension(); // Decide path based on theme if ($request->theme == 4) { $path = 'uploads/about/videos/' . $filename; Storage::disk('public')->putFileAs('uploads/about/videos', $file, $filename); } else { $manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver()); $image = $manager->read($file)->resize(1200, 800, function ($constraint) { $constraint->aspectRatio(); $constraint->upsize(); }); $path = 'uploads/about/' . $filename; Storage::disk('public')->put($path, (string) $image->encode()); } // Delete old file if exists if ($service->image) { Storage::disk('public')->delete($service->image); } // Save to same field $service->image = $path; } $service->save(); return redirect()->route('admin-about.index')->with('message', 'About updated successfully'); } catch (\Exception $e) { Log::error('An error occurred while updating:', [ 'error message' => $e->getMessage(), ]); return redirect()->back()->with('error', 'An error occurred'); } } public function destroy($id) { try { $service = About::findOrFail($id); // Delete the image file if it exists if ($service->image) { Storage::disk('public')->delete($service->image); } // Delete the record $service->delete(); return redirect()->route('admin-about.index')->with('success', 'About deleted successfully'); } catch (\Exception $e) { Log::error('Error deleting About: ' . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred while deleting the About'); } } }