++ Primo Caricamento
This commit is contained in:
90
config/settings.php
Normal file
90
config/settings.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// config/settings.php — Impostazioni dinamiche dell'applicazione
|
||||
//
|
||||
// DIFFERENZA FONDAMENTALE rispetto al .env:
|
||||
//
|
||||
// .env / config/*.php → configurazione STATICA (infrastruttura, connessioni)
|
||||
// Cambia raramente. Richiede restart del container.
|
||||
//
|
||||
// settings (questo file + tabella DB)
|
||||
// → configurazione DINAMICA (business logic)
|
||||
// Modificabile dall'admin via pannello web,
|
||||
// senza restart. Cambia nel tempo.
|
||||
//
|
||||
// COME FUNZIONA:
|
||||
// 1. I valori di default sono qui (fallback se la tabella DB è vuota)
|
||||
// 2. Al primo avvio, il SettingSeeder popola la tabella `settings`
|
||||
// 3. SettingService::get('chiave') legge dalla tabella (con cache Redis)
|
||||
// 4. Il pannello Impostazioni permette di modificarli via web
|
||||
//
|
||||
// ESEMPIO D'USO in un Controller o View:
|
||||
// $perPage = app(SettingService::class)->get('items_per_page');
|
||||
// // oppure tramite helper globale (se definito):
|
||||
// $valuta = setting('currency_symbol');
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
return [
|
||||
|
||||
// ─── Valori di default ─────────────────────────────────────────────────
|
||||
// Usati come fallback se la chiave non esiste nella tabella DB.
|
||||
// Modificare questi valori richiede un deploy; per cambiamenti frequenti
|
||||
// usa direttamente il pannello impostazioni.
|
||||
'defaults' => [
|
||||
'company_name' => 'La Mia Azienda',
|
||||
'currency' => 'EUR',
|
||||
'currency_symbol' => '€',
|
||||
'date_format' => 'd/m/Y',
|
||||
'items_per_page' => 15,
|
||||
'welcome_message' => 'Benvenuto nel Portale Clienti!',
|
||||
'allow_notes' => true,
|
||||
'theme_color' => '#0d6efd',
|
||||
'support_email' => 'supporto@example.com',
|
||||
'max_file_size_mb' => 10,
|
||||
],
|
||||
|
||||
// ─── Descrizioni leggibili ─────────────────────────────────────────────
|
||||
// Visualizzate nel pannello impostazioni come label/tooltip.
|
||||
'descriptions' => [
|
||||
'company_name' => 'Nome della tua azienda (mostrato in header e report)',
|
||||
'currency' => 'Codice valuta ISO 4217 (es. EUR, USD, GBP)',
|
||||
'currency_symbol' => 'Simbolo valuta visualizzato nei prezzi (es. €, $)',
|
||||
'date_format' => 'Formato date (sintassi PHP: d/m/Y, Y-m-d, ecc.)',
|
||||
'items_per_page' => 'Numero di righe nelle tabelle paginate',
|
||||
'welcome_message' => 'Messaggio mostrato nella dashboard',
|
||||
'allow_notes' => 'Abilita il campo note nelle schede cliente',
|
||||
'theme_color' => 'Colore principale dell\'interfaccia (hex, es. #0d6efd)',
|
||||
'support_email' => 'Email mostrata ai clienti per richieste di supporto',
|
||||
'max_file_size_mb' => 'Dimensione massima upload allegati (in MB)',
|
||||
],
|
||||
|
||||
// ─── Tipi di dato ──────────────────────────────────────────────────────
|
||||
// Usati da SettingService per convertire i valori al tipo corretto.
|
||||
// La tabella DB salva tutto come stringa; il tipo definisce il cast.
|
||||
'types' => [
|
||||
'company_name' => 'string',
|
||||
'currency' => 'string',
|
||||
'currency_symbol' => 'string',
|
||||
'date_format' => 'string',
|
||||
'items_per_page' => 'integer',
|
||||
'welcome_message' => 'text',
|
||||
'allow_notes' => 'boolean',
|
||||
'theme_color' => 'string',
|
||||
'support_email' => 'string',
|
||||
'max_file_size_mb' => 'integer',
|
||||
],
|
||||
|
||||
// ─── Gruppi (per organizzare il pannello impostazioni) ─────────────────
|
||||
'groups' => [
|
||||
'Azienda' => ['company_name', 'support_email'],
|
||||
'Visualizzazione' => ['currency', 'currency_symbol', 'date_format',
|
||||
'items_per_page', 'theme_color', 'welcome_message'],
|
||||
'Funzionalità' => ['allow_notes', 'max_file_size_mb'],
|
||||
],
|
||||
|
||||
// ─── Cache ─────────────────────────────────────────────────────────────
|
||||
// Durata cache (minuti). Le impostazioni vengono lette dal DB una volta
|
||||
// e poi servite dalla cache per evitare query ad ogni richiesta.
|
||||
'cache_ttl_minutes' => 60,
|
||||
|
||||
];
|
||||
Reference in New Issue
Block a user