++ Primo Caricamento
This commit is contained in:
68
app/Http/Controllers/SettingController.php
Normal file
68
app/Http/Controllers/SettingController.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// SettingController — pannello impostazioni dinamiche
|
||||
//
|
||||
// Permette all'admin di modificare le impostazioni dell'applicazione
|
||||
// senza toccare il codice o riavviare i container.
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
use App\Services\SettingService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SettingController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private SettingService $settings
|
||||
) {}
|
||||
|
||||
// ─── Mostra il pannello impostazioni ──────────────────────────────────
|
||||
public function index()
|
||||
{
|
||||
// Tutte le impostazioni correnti dal servizio
|
||||
$current = $this->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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user