paginate(20); return view('admin.news.index', compact('news')); } public function create(): View { return view('admin.news.form', ['news' => null]); } public function store(Request $request) { $data = $request->validate([ 'title' => ['required', 'string', 'max:160'], 'slug' => ['required', 'string', 'max:160', 'unique:news,slug'], 'category' => ['required', 'in:industry,company,event'], 'summary' => ['nullable', 'string', 'max:255'], 'body' => ['nullable', 'string'], 'cover' => ['nullable', 'string', 'max:255'], 'status' => ['required', 'in:published,draft'], 'published_at' => ['nullable', 'date'], ]); $data['published_at'] = $data['published_at'] ?? now(); News::create($data); return redirect()->route('admin.news.index')->with('success', '新闻已创建'); } public function edit(News $news): View { return view('admin.news.form', compact('news')); } public function update(Request $request, News $news) { $data = $request->validate([ 'title' => ['required', 'string', 'max:160'], 'slug' => ['required', 'string', 'max:160', 'unique:news,slug,' . $news->id], 'category' => ['required', 'in:industry,company,event'], 'summary' => ['nullable', 'string', 'max:255'], 'body' => ['nullable', 'string'], 'cover' => ['nullable', 'string', 'max:255'], 'status' => ['required', 'in:published,draft'], 'published_at' => ['nullable', 'date'], ]); $news->update($data); return redirect()->route('admin.news.index')->with('success', '新闻已更新'); } public function destroy(News $news) { $news->delete(); return redirect()->route('admin.news.index')->with('success', '新闻已删除'); } }