middleware(function ($request, $next) { abort_unless(\App\Utilities\SystemAccess::canOpenSettings(), 403); return $next($request); }); } public function manage() { return view('settings.navigation.edit', [ 'sections' => BusinessNavigation::all(), ]); } public function save(Request $request) { $request->validate([ 'section_titles' => ['nullable', 'array'], 'section_titles.*' => ['nullable', 'string', 'max:50'], 'page_titles' => ['nullable', 'array'], 'page_titles.*' => ['nullable', 'array'], 'page_titles.*.*' => ['nullable', 'string', 'max:50'], ]); $sectionTitles = (array) $request->input('section_titles', []); $pageTitles = (array) $request->input('page_titles', []); $titles = ['sections' => [], 'pages' => []]; // Only persist labels for items that exist in the configured navigation. foreach (config('business_navigation', []) as $section) { $sectionSlug = $section['slug']; $sectionTitle = trim((string) ($sectionTitles[$sectionSlug] ?? '')); if ($sectionTitle !== '') { $titles['sections'][$sectionSlug] = $sectionTitle; } foreach (collect($section['pages'] ?? [])->flatMap(fn (array $page) => [$page, ...($page['children'] ?? [])]) as $page) { $pageTitle = trim((string) ($pageTitles[$sectionSlug][$page['slug']] ?? '')); if ($pageTitle !== '') { $titles['pages'][$sectionSlug][$page['slug']] = $pageTitle; } } } setting()->set('navigation.titles', $titles); setting()->save(); $message = '保存成功,侧边栏功能名称已更新。'; flash($message)->success(); return response()->json([ 'status' => null, 'success' => true, 'error' => false, 'message' => $message, 'data' => null, 'redirect' => route('dashboard'), ]); } }