Callbacks, hooks de cycle de vie & journalisation
Intervenir sur l'affichage d'une cellule, le rendu du contrôle d'un champ, et ce qui se passe à chaque étape d'un enregistrement - plus une piste d'audit de chaque modification.
Callbacks de colonne - affichage personnalisé des cellules
->column_callback($column, $callback, $path = null) transforme la valeur affichée d'une colonne de LISTE. Il s'exécute pour chaque ligne, en vue liste uniquement, appelé avec ($value, $fieldname, $primary_key, $row, $xcrud). Un simple retour de chaîne est automatiquement échappé pour plus de sécurité ; pour retourner du véritable balisage, encapsulez-le avec 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');
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$column | string | - | Colonne dont la valeur affichée est transformée |
$callback | callable|string | - | Nom de fonction (résolu via la convention functions.php) ou une closure |
$path | ?string | null | Fichier explicite depuis lequel charger la fonction, à la place du core/functions.php par défaut |
Voir Rendu personnalisé des cellules : badges & avatars pour davantage d'exemples de Xcrud::html() comme les badges et avatars.
Callbacks de champ - contrôles de formulaire personnalisés
->field_callback($field, $callback, $path = null) remplace le contrôle de formulaire d'un champ par du HTML personnalisé, appelé avec ($value, $field, $primary_key, $list, $xcrud) ($list est la ligne en cours d'édition, null pour un nouvel enregistrement). Le HTML retourné est de confiance et doit inclure son propre contrôle name="{field}" pour que la valeur soit bien réenregistrée.
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');
Hooks de cycle de vie
Huit hooks s'exécutent à des moments fixes autour d'un enregistrement/suppression, chacun prenant $callback, ?string $path = null - chargés via la même convention functions.php (ou un chemin explicite) que les callbacks ci-dessus :
| Hook | Se déclenche |
|---|---|
before_create | Avant la construction du formulaire d'ajout vide |
before_list | Avant la récupération des données de lignes de la grille |
before_insert | Avant l'écriture d'une nouvelle ligne |
after_insert | Après l'écriture d'une nouvelle ligne |
before_update | Avant l'écriture d'une ligne existante |
after_update | Après l'écriture d'une ligne existante |
before_remove | Avant la suppression d'une ligne |
after_remove | Après la suppression d'une ligne |
function orders_after_insert($data, $primary_key, $xcrud)
{
$xcrud->toast('Order #' . $primary_key . ' created.');
}
$xcrud->after_insert('orders_after_insert');
Notifications toast
->toast($message, $type = 'success') met en file une notification toast depuis un hook ou une fonction de bouton. $type est une chaîne libre ; le client reconnaît success/error/info/warning pour le style, et retombe sur un toast de couleur neutre pour toute autre valeur.
$xcrud->toast('Payment recorded.', 'success');
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$message | string | - | Texte du toast |
$type | string | 'success' | success, error, info, ou warning |
Piste d'audit avec set_logging()
->set_logging($enabled = true) écrit chaque création/mise à jour/suppression effectuée par le formulaire de cette table dans une table logs : nom de la table, action, utilisateur connecté, id de l'enregistrement, les nouvelles valeurs de champs, et - pour la mise à jour/suppression, lorsqu'un état précédent existe à capturer - les propres valeurs de la ligne juste avant la modification (old_record). Désactivé par défaut, car cela ajoute une écriture supplémentaire (et, pour la mise à jour/suppression, une lecture supplémentaire) à chaque enregistrement.
$xcrud->set_logging(true);
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$enabled | bool | true | Si des lignes de journal d'audit doivent être écrites pour les modifications de cette table |