'required|min:5|unique:news,title', 'category_id' => 'required|exists:categories,id', 'image' => 'nullable|image|max:2048', // Max 2MB 'content' => 'required|min:20', ]; public function save() { $this->validate(); // Proses upload gambar $imagePath = $this->image ? $this->image->store('news', 'public') : null; News::create([ 'title' => $this->title, 'slug' => Str::slug($this->title), 'category_id' => $this->category_id, 'image' => $imagePath, 'content' => $this->content, 'user_id' => auth()->id(), 'is_published' => $this->is_published, ]); Toaster::success('Berita berhasil diterbitkan!'); return redirect()->route('admin.news'); } public function render() { return view('livewire.admin.news.news-create', [ 'categories' => Category::all() ]); } }