관리-도구
편집 파일: ProjectController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use App\Models\Project; use Illuminate\Support\Facades\Storage; class ProjectController extends Controller { public function index() { $projects = Project::orderBy('created_at', 'desc')->get(); return view('admin.project', compact('projects')); } public function store(Request $request) { try { $validateData = $request->validate([ 'title' => 'required|string|max:255', 'image' => 'required|image|mimes:jpeg,webp,png,jpg,gif,svg,avif', ]); if (!$request->hasFile('image')) { return redirect()->back()->withErrors(['image' => 'No file uploaded']); } $imagePath = $request->file('image')->store('projects', 'public'); $project = new Project(); $project->title = $validateData['title']; $project->image = $imagePath; $project->save(); return redirect()->route('admin-project.index')->with('success', 'Project added successfully'); } catch (\Exception $e) { Log::error("Add project error: " . $e->getMessage()); return redirect()->back()->withErrors(['error' => 'An error occurred']); } } public function update(Request $request, $id) { try { $project = Project::findOrFail($id); $validateData = $request->validate([ 'title' => 'required|string|max:255', 'image' => 'nullable|image|mimes:jpeg,webp,png,jpg,gif,svg,avif', ]); // Update Title $project->title = $validateData['title']; // Update image if provided if ($request->hasFile('image')) { $imagePath = $request->file('image')->store('projects', 'public'); if ($project->image) { Storage::disk('public')->delete($project->image); } $project->image = $imagePath; } $project->save(); return redirect()->route('admin-project.index')->with('success', 'Project updated successfully'); } catch (\Exception $e) { Log::error("Update project error: " . $e->getMessage()); return redirect()->back()->with('error', 'An error occurred'); } } public function destroy($id) { try { $project = Project::findOrFail($id); if ($project->image) { Storage::disk('public')->delete($project->image); } $project->delete(); return redirect()->route('admin-project.index')->with('success', 'Project deleted successfully'); } catch (\Exception $e) { Log::error("Delete project error: " . $e->getMessage()); return redirect()->back()->with('error', 'Unable to delete project'); } } }