settings->all(); // Configurazione per la UI (label, gruppi, tipi) $config = config('settings'); return view('settings.index', compact('current', 'config')); } // ─── Salva le modifiche ──────────────────────────────────────────────── public function update(Request $request) { $types = config('settings.types', []); $defaults = config('settings.defaults', []); // Costruisce le regole di validazione dinamicamente // in base ai tipi definiti in config/settings.php $rules = []; foreach ($defaults as $key => $default) { $type = $types[$key] ?? 'string'; $rules[$key] = match ($type) { 'integer' => 'nullable|integer|min:1', 'boolean' => 'nullable|boolean', 'string' => 'nullable|string|max:255', 'text' => 'nullable|string', default => 'nullable|string', }; } $validated = $request->validate($rules); // I checkbox non inviati dal form hanno valore null → false per i boolean foreach ($types as $key => $type) { if ($type === 'boolean' && ! array_key_exists($key, $validated)) { $validated[$key] = false; } } $this->settings->setMany($validated); return redirect() ->route('settings.index') ->with('success', 'Impostazioni salvate con successo. La cache è stata aggiornata.'); } }