/

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');
ParametroTipoPredefinitoDescrizione
$columnstring-Colonna il cui valore visualizzato viene trasformato
$callbackcallable|string-Nome di funzione (risolto tramite la convenzione functions.php) o una closure
$path?stringnullFile 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:

HookSi attiva
before_createPrima che venga costruito il form Aggiungi vuoto
before_listPrima che vengano recuperati i dati riga della griglia
before_insertPrima che una nuova riga venga scritta
after_insertDopo che una nuova riga è stata scritta
before_updatePrima che una riga esistente venga scritta
after_updateDopo che una riga esistente è stata scritta
before_removePrima che una riga venga eliminata
after_removeDopo 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');
ParametroTipoPredefinitoDescrizione
$messagestring-Testo del toast
$typestring'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);
ParametroTipoPredefinitoDescrizione
$enabledbooltrueSe scrivere righe di audit-log per le modifiche di questa tabella