/

Logica condizionale mostra/nascondi/disabilita

Quattro metodi correlati reagiscono al valore di un campo - due sono UX lato client solo per il form, due sono a livello di griglia e applicati dal server.

condition() - UX live del form

->condition($watchField, $operator, $value, $targetField, $effect) mostra, nasconde, abilita o disabilita $targetField in base al valore CORRENTE di $watchField nel FORM APERTO, riverificato dal vivo mentre il visitatore digita/seleziona.

$xcrud->condition('status', 'eq', 'inactive', 'reason', 'show');
ParametroTipoPredefinitoDescrizione
$watchFieldstring-Campo il cui valore live guida la condizione
$operatorstring-Simbolo (=, !=, >, >=, <, <=) o codice (eq, neq, gt, gte, lt, lte, contains, starts, ends)
$valuestring-Valore confrontato con $watchField
$targetFieldstring-Campo a cui viene applicato l'effetto
$effectstring-show, hide, enable, o disable

Puramente una comodità UX lato client: l'API non ha alcuna idea che queste regole esistano, quindi un campo target disabilitato/nascosto non è per questo protetto dall'essere inviato in qualche altro modo.

disable_logic() - valutato dal server, solo form di modifica

->disable_logic($fields, $condition) disabilita uno o più campi nel form di MODIFICA ogni volta che $condition viene valutata vera rispetto alla riga attualmente in modifica. $condition è un semplice confronto "campo OP valore" valutato in PHP, oppure un frammento SQL grezzo {{...}} per qualsiasi cosa un confronto semplice non possa esprimere.

$xcrud->disable_logic('total', 'total>1000');
$xcrud->disable_logic(['total', 'checkNo'], '{{IN (SELECT amount FROM payments LIMIT 1)}}');

Non si applica mai a un record del tutto nuovo (il form Aggiungi) - non esiste ancora una riga rispetto a cui valutare una condizione.

hide_logic() - valutato dal server, solo vista LISTA

->hide_logic($fields, $condition) usa la stessa grammatica di condizione di disable_logic(), ma per la vista LISTA: ogni volta che $condition viene valutata vera per una riga, il valore di quella riga per $fields viene azzerato del tutto (null) prima che la risposta venga mai costruita. Si tratta di un vero nascondimento server-side - nulla di sensibile viaggia nel JSON perché un visitatore lo legga dalle devtools, a differenza di un valore semplicemente stilizzato/nascosto lato client.

$xcrud->hide_logic('total', '{{IN (SELECT amount FROM payments LIMIT 1)}}');

logic() - il superset unificato

->logic($fields, $condition, $action = 'hide', $content = null) è un unico punto di ingresso più generale su disable_logic()/hide_logic(), che sceglie quale comportamento applicare tramite $action. A differenza di un semplice azzeramento di hide_logic(), 'hide' può sostituire la cella azzerata con contenuto HTML personalizzato.

$xcrud->logic('paymentDate', 'amount>50000', 'hide', '<span class="text-red-600 font-bold">High Value</span>');
$xcrud->logic('checkNumber', 'amount>50000', 'disable');
ParametroTipoPredefinitoDescrizione
$fieldsstring|array-Campo/i a cui si applica l'azione
$conditionstring-Confronto semplice o un'espressione {{sql}}
$actionstring'hide''hide' (vista LISTA) o 'disable' (form di modifica)
$content?stringnullUsato solo da 'hide': HTML mostrato al posto di una cella vuota

La distinzione chiave

condition() è UX solo per il form, lato client - cambia cosa è visibile/abilitato nel form aperto per un'esperienza più gradevole, ma non applica nulla. hide_logic()/logic('hide', ...) sono a livello di vista LISTA e realmente applicati dal server - il valore non raggiunge affatto il client quando la condizione corrisponde. Usa condition() per guidare l'inserimento dati; usa hide_logic()/logic() quando un valore deve davvero non lasciare il server per alcune righe.