collect(self::KEYS)->mapWithKeys(fn (string $key) => [$key => SiteSetting::valueFor($key, '')]), 'robotsEnabled' => SiteSetting::booleanFor('seo_robots_enabled', true), ]); } public function update(Request $request): RedirectResponse { $data = $request->validate([ 'seo_site_name' => ['required', 'string', 'max:80'], 'seo_title_suffix' => ['nullable', 'string', 'max:80'], 'seo_default_title' => ['required', 'string', 'max:160'], 'seo_default_description' => ['required', 'string', 'max:320'], 'seo_default_keywords' => ['nullable', 'string', 'max:500'], 'seo_canonical_base_url' => ['nullable', 'url:http,https', 'max:2048'], 'seo_default_og_image' => ['nullable', 'url:http,https', 'max:2048'], 'seo_twitter_site' => ['nullable', 'string', 'max:40', 'regex:/^@?[A-Za-z0-9_]{1,15}$/'], 'seo_organization_name' => ['nullable', 'string', 'max:120'], 'seo_organization_logo' => ['nullable', 'url:http,https', 'max:2048'], 'seo_google_site_verification' => ['nullable', 'string', 'max:255'], ]); foreach (self::KEYS as $key) { SiteSetting::put($key, isset($data[$key]) ? trim((string) $data[$key]) : null); } SiteSetting::put('seo_robots_enabled', $request->boolean('seo_robots_enabled') ? '1' : '0'); return back()->with('status', 'SEO settings updated.'); } }