CmsPage::latest()->paginate(25)]); } public function create() { return view('admin.cms.form', ['page' => new CmsPage()]); } public function store(Request $request) { $page = CmsPage::create($this->validated($request)); return redirect()->route('admin.cms.edit', $page)->with('status', 'Page created.'); } public function edit(CmsPage $page) { return view('admin.cms.form', compact('page')); } public function update(Request $request, CmsPage $page) { $page->update($this->validated($request, $page)); return back()->with('status', 'Page updated.'); } public function destroy(CmsPage $page) { $page->delete(); return redirect()->route('admin.cms.index')->with('status', 'Page deleted.'); } private function validated(Request $request, ?CmsPage $page = null): array { $request->merge(['slug' => Str::slug($request->input('slug') ?: $request->input('title', ''))]); $data = $request->validate([ 'title' => ['required','string','max:160'], 'slug' => ['required','string','max:180', Rule::unique('cms_pages','slug')->ignore($page?->id)], 'excerpt' => ['nullable','string','max:1000'], 'body' => ['required','string'], 'meta_title' => ['nullable','string','max:160'], 'meta_description' => ['nullable','string','max:320'], ]); $data['is_published'] = $request->boolean('is_published'); $data['published_at'] = $data['is_published'] ? ($page?->published_at ?? now()) : null; return $data; } }