Definire il tuo primo campo personalizzato
Un percorso guidato mirato su un singolo campo: cambiane il tipo, valida il suo input, poi bloccalo in modifica.
1. Cambia il tipo
Inizia con ->change_type($field, $type, $length = '', $extra = []) per scegliere come il campo viene renderizzato nel form:
$xcrud->change_type('email', 'text');
Vedi Panoramica dei tipi di campo per l'elenco completo dei tipi disponibili.
2. Valida il suo valore
->validation_pattern($field, $pattern) richiede che il valore (non vuoto) di un campo corrisponda a una regex nel form Aggiungi/Modifica, applicata sia lato client sia lato server. $pattern è una delle scorciatoie nominate sotto, oppure il corpo letterale di una regex senza delimitatori:
$xcrud->validation_pattern('email', 'email');
| Scorciatoia | Corrisponde a |
|---|---|
email | Una semplice forma utente@host |
alpha | Solo lettere |
alpha_numeric | Lettere e cifre |
alpha_dash | Lettere, cifre, underscore, trattino |
numeric | Un numero intero o decimale, eventualmente negativo |
natural | Solo cifre (un intero non negativo) |
url | Un URL http:// o https:// |
Per qualsiasi altro caso, passa il corpo letterale di una regex (senza barre, senza flag):
$xcrud->validation_pattern('sku', '^[A-Z]{2}-\d{4}$');
Un campo vuoto supera da solo il controllo del pattern - abbinalo a ->validation_required() per vietare anche di lasciarlo in bianco. Vedi Validazione dei campi per l'approfondimento completo su required/pattern.
3. Mostralo, ma blocca la modifica
->readonly($field) e ->disabled($field) mostrano entrambi un campo nel form impedendo al visitatore di modificarlo - la differenza è puramente estetica (un input in stile readonly contro un controllo disabilitato in grigio). Nessuno dei due è un controllo di sicurezza lato server: cambiano solo cosa il browser lascia cliccare a un visitatore, non cosa accetta l'API.
$xcrud->readonly('accountNumber');
Un visitatore che chiama direttamente la REST API, bypassando completamente il form, non viene affatto fermato da readonly()/disabled(). Il vero confine di sicurezza è la whitelist di quali colonne sono modificabili in primo luogo - vedi Sicurezza: blacklist di tabelle e colonne.
Mettendo tutto insieme
$xcrud = Xcrud::get_instance();
$xcrud->table('customers');
$xcrud->route('customers');
$xcrud->change_type('email', 'text');
$xcrud->validation_pattern('email', 'email');
$xcrud->readonly('accountNumber');
$xcrud->render();