/

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ètreTypeDéfautDescription
$columnstring-Colonne dont la valeur affichée est transformée
$callbackcallable|string-Nom de fonction (résolu via la convention functions.php) ou une closure
$path?stringnullFichier 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 :

HookSe déclenche
before_createAvant la construction du formulaire d'ajout vide
before_listAvant la récupération des données de lignes de la grille
before_insertAvant l'écriture d'une nouvelle ligne
after_insertAprès l'écriture d'une nouvelle ligne
before_updateAvant l'écriture d'une ligne existante
after_updateAprès l'écriture d'une ligne existante
before_removeAvant la suppression d'une ligne
after_removeAprè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ètreTypeDéfautDescription
$messagestring-Texte du toast
$typestring'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ètreTypeDéfautDescription
$enabledbooltrueSi des lignes de journal d'audit doivent être écrites pour les modifications de cette table