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