orderBy('title')->get(); return view('admin.pages.index', compact('pages')); } public function create() { return view('admin.pages.form'); } public function store(Request $request) { $data = $this->validated($request); Page::create($data); return redirect()->route('admin.pages.index')->with('success', 'Seite erstellt.'); } public function edit(Page $page) { return view('admin.pages.form', compact('page')); } public function update(Request $request, Page $page) { $data = $this->validated($request, $page); $page->update($data); return redirect()->route('admin.pages.index')->with('success', 'Seite aktualisiert.'); } public function destroy(Page $page) { $page->delete(); return redirect()->route('admin.pages.index')->with('success', 'Seite gelöscht.'); } private function validated(Request $request, ?Page $page = null): array { $data = $request->validate([ 'title' => 'required|string|max:255', 'slug' => 'nullable|string|max:255', 'type' => 'required|in:static,blog,faq', 'content' => 'nullable|string', 'meta_title' => 'nullable|string|max:255', 'meta_description' => 'nullable|string|max:500', 'published' => 'boolean', 'published_at' => 'nullable|date', 'show_in_footer' => 'boolean', 'show_in_nav' => 'boolean', 'nav_sort' => 'integer|min:0', ]); $data['slug'] = $data['slug'] ? Str::slug($data['slug']) : Str::slug($data['title']); $data['published'] = $request->boolean('published'); $data['show_in_footer'] = $request->boolean('show_in_footer'); $data['show_in_nav'] = $request->boolean('show_in_nav'); return $data; } }