Callback, hook di ciclo di vita e logging
Interviene su come si visualizza una cella, su come si renderizza il controllo di un campo, e su cosa accade a ogni fase di un salvataggio - più una traccia di audit di ogni modifica.
Callback di colonna - visualizzazione personalizzata delle celle
->column_callback($column, $callback, $path = null) trasforma il valore visualizzato di una colonna nella LISTA. Viene eseguita per ogni riga, solo in vista lista, chiamata con ($value, $fieldname, $primary_key, $row, $xcrud). Un valore di ritorno stringa semplice viene sottoposto ad escape automaticamente per sicurezza; per restituire vero markup, racchiudilo con Xcrud::html($html, $text = null).
function status_badge($value, $fieldname, $primary_key, $row, $xcrud)
{
$class = $value === 'active' ? 'badge-success' : 'badge-muted';
return Xcrud::html('<span class="badge ' . $class . '">' . htmlspecialchars($value) . '</span>');
}
$xcrud->column_callback('status', 'status_badge');
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
$column | string | - | Colonna il cui valore visualizzato viene trasformato |
$callback | callable|string | - | Nome di funzione (risolto tramite la convenzione functions.php) o una closure |
$path | ?string | null | File esplicito da cui caricare la funzione, invece del predefinito core/functions.php |
Vedi Rendering personalizzato delle celle: badge e avatar per altri esempi di Xcrud::html() come badge e avatar.
Callback di campo - controlli di form personalizzati
->field_callback($field, $callback, $path = null) sostituisce il controllo di form di un campo con HTML personalizzato, chiamata con ($value, $field, $primary_key, $list, $xcrud) ($list è la riga in modifica, null per un nuovo record). L'HTML restituito è considerato affidabile e deve includere il proprio controllo name="{field}" perché il valore torni indietro correttamente al salvataggio.
function rating_stars($value, $field, $primary_key, $list, $xcrud)
{
return '<input type="number" name="' . $field . '" min="1" max="5" value="' . (int) $value . '">';
}
$xcrud->field_callback('rating', 'rating_stars');
Hook di ciclo di vita
Otto hook vengono eseguiti in punti fissi intorno a un salvataggio/eliminazione, ciascuno accettando $callback, ?string $path = null - caricati tramite la stessa convenzione functions.php (o un percorso esplicito) delle callback sopra:
| Hook | Si attiva |
|---|---|
before_create | Prima che venga costruito il form Aggiungi vuoto |
before_list | Prima che vengano recuperati i dati riga della griglia |
before_insert | Prima che una nuova riga venga scritta |
after_insert | Dopo che una nuova riga è stata scritta |
before_update | Prima che una riga esistente venga scritta |
after_update | Dopo che una riga esistente è stata scritta |
before_remove | Prima che una riga venga eliminata |
after_remove | Dopo che una riga è stata eliminata |
function orders_after_insert($data, $primary_key, $xcrud)
{
$xcrud->toast('Order #' . $primary_key . ' created.');
}
$xcrud->after_insert('orders_after_insert');
Notifiche toast
->toast($message, $type = 'success') accoda una notifica toast dall'interno di un hook o di una funzione pulsante. $type è una stringa libera; il client riconosce success/error/info/warning ai fini dello stile, ricadendo su un toast dal colore semplice per qualsiasi altro valore.
$xcrud->toast('Payment recorded.', 'success');
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
$message | string | - | Testo del toast |
$type | string | 'success' | success, error, info, o warning |
Traccia di audit con set_logging()
->set_logging($enabled = true) scrive ogni creazione/aggiornamento/eliminazione effettuata dal form di questa tabella in una tabella logs: nome tabella, azione, utente collegato, id del record, i nuovi valori dei campi e - per aggiornamento/eliminazione, dove esiste uno stato precedente da catturare - i valori della riga stessa immediatamente prima della modifica (old_record). Disattivato per impostazione predefinita, poiché aggiunge una scrittura extra (e, per aggiornamento/eliminazione, una lettura extra) a ogni salvataggio.
$xcrud->set_logging(true);
| Parametro | Tipo | Predefinito | Descrizione |
|---|---|---|---|
$enabled | bool | true | Se scrivere righe di audit-log per le modifiche di questa tabella |