Callbacks, Lifecycle-Hooks & Logging
Greifen Sie ein in die Anzeige einer Zelle, das Rendering eines Feld-Controls und das Geschehen bei jeder Phase eines Speichervorgangs - plus ein Audit-Trail für jede Änderung.
Column-Callbacks - individuelle Zellenanzeige
->column_callback($column, $callback, $path = null) transformiert den angezeigten Wert einer LIST-Spalte. Es läuft für jede Zeile, nur in der Listenansicht, aufgerufen mit ($value, $fieldname, $primary_key, $row, $xcrud). Ein einfacher String-Rückgabewert wird zur Sicherheit automatisch escaped; um echtes Markup zurückzugeben, umschließen Sie ihn mit 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');
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$column | string | - | Spalte, deren angezeigter Wert transformiert wird |
$callback | callable|string | - | Funktionsname (aufgelöst über die functions.php-Konvention) oder eine Closure |
$path | ?string | null | Explizite Datei, aus der die Funktion geladen wird, statt der Standarddatei core/functions.php |
Siehe Individuelles Zellen-Rendering: Badges & Avatare für weitere Xcrud::html()-Beispiele wie Badges und Avatare.
Field-Callbacks - individuelle Formular-Controls
->field_callback($field, $callback, $path = null) ersetzt das Formular-Control eines einzelnen Felds durch individuelles HTML, aufgerufen mit ($value, $field, $primary_key, $list, $xcrud) ($list ist die bearbeitete Zeile, null bei einem neuen Datensatz). Das zurückgegebene HTML ist vertrauenswürdig und muss ein eigenes name="{field}"-Control enthalten, damit der Wert beim Speichern übernommen wird.
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');
Lifecycle-Hooks
Acht Hooks laufen an festen Punkten rund um ein Speichern/Löschen, jeweils mit $callback, ?string $path = null - geladen über dieselbe functions.php-Konvention (oder einen expliziten Pfad) wie die obigen Callbacks:
| Hook | Ausgelöst |
|---|---|
before_create | Bevor das leere Add-Formular aufgebaut wird |
before_list | Bevor die Zeilendaten des Grids abgerufen werden |
before_insert | Bevor eine neue Zeile geschrieben wird |
after_insert | Nachdem eine neue Zeile geschrieben wurde |
before_update | Bevor eine bestehende Zeile geschrieben wird |
after_update | Nachdem eine bestehende Zeile geschrieben wurde |
before_remove | Bevor eine Zeile gelöscht wird |
after_remove | Nachdem eine Zeile gelöscht wurde |
function orders_after_insert($data, $primary_key, $xcrud)
{
$xcrud->toast('Order #' . $primary_key . ' created.');
}
$xcrud->after_insert('orders_after_insert');
Toast-Benachrichtigungen
->toast($message, $type = 'success') reiht eine Toast-Benachrichtigung aus einem Hook oder einer Button-Funktion heraus ein. $type ist ein freier String; der Client erkennt success/error/info/warning für das Styling, alles andere fällt auf einen einfarbigen Toast zurück.
$xcrud->toast('Payment recorded.', 'success');
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$message | string | - | Toast-Text |
$type | string | 'success' | success, error, info oder warning |
Audit-Trail mit set_logging()
->set_logging($enabled = true) schreibt jedes Create/Update/Delete, das das Formular dieser Tabelle auslöst, in eine logs-Tabelle: Tabellenname, Aktion, angemeldeter Benutzer, Datensatz-ID, die neuen Feldwerte und - bei Update/Delete, sofern ein vorheriger Zustand zum Erfassen existiert - die eigenen Werte der Zeile unmittelbar vor der Änderung (old_record). Standardmäßig deaktiviert, da es bei jedem Speichern einen zusätzlichen Schreibvorgang (und bei Update/Delete einen zusätzlichen Lesevorgang) hinzufügt.
$xcrud->set_logging(true);
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$enabled | bool | true | Ob für Änderungen an dieser Tabelle Audit-Log-Zeilen geschrieben werden |