Callbacks, hooks del ciclo de vida y registro
Interviene en cómo se muestra una celda, cómo se renderiza el control de un campo y qué ocurre en cada etapa de un guardado - además de una pista de auditoría de cada cambio.
Callbacks de columna - visualización personalizada de celdas
->column_callback($column, $callback, $path = null) transforma el valor mostrado de una columna de LISTA. Se ejecuta para cada fila, solo en la vista de lista, llamado con ($value, $fieldname, $primary_key, $row, $xcrud). Una cadena simple devuelta se escapa automáticamente por seguridad; para devolver marcado real, envuélvelo 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');
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
$column | string | - | Columna cuyo valor mostrado se transforma |
$callback | callable|string | - | Nombre de función (resuelto mediante la convención functions.php) o un closure |
$path | ?string | null | Archivo explícito desde el que cargar la función, en lugar del core/functions.php por defecto |
Consulta Renderizado personalizado de celdas: insignias y avatares para más ejemplos de Xcrud::html() como insignias y avatares.
Callbacks de campo - controles de formulario personalizados
->field_callback($field, $callback, $path = null) reemplaza el control de formulario de un campo por HTML personalizado, llamado con ($value, $field, $primary_key, $list, $xcrud) ($list es la fila que se está editando, null para un registro nuevo). El HTML devuelto es de confianza y debe incluir su propio control name="{field}" para que el valor se guarde correctamente.
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 del ciclo de vida
Ocho hooks se ejecutan en puntos fijos alrededor de un guardado/eliminación, cada uno recibiendo $callback, ?string $path = null - cargados mediante la misma convención functions.php (o una ruta explícita) que los callbacks anteriores:
| Hook | Se dispara |
|---|---|
before_create | Antes de construir el formulario de Añadir vacío |
before_list | Antes de obtener los datos de fila de la cuadrícula |
before_insert | Antes de escribir una fila nueva |
after_insert | Después de escribir una fila nueva |
before_update | Antes de escribir una fila existente |
after_update | Después de escribir una fila existente |
before_remove | Antes de eliminar una fila |
after_remove | Después de eliminar una fila |
function orders_after_insert($data, $primary_key, $xcrud)
{
$xcrud->toast('Order #' . $primary_key . ' created.');
}
$xcrud->after_insert('orders_after_insert');
Notificaciones toast
->toast($message, $type = 'success') encola una notificación toast desde dentro de un hook o una función de botón. $type es una cadena de formato libre; el cliente reconoce success/error/info/warning para el estilo, recurriendo a un toast de color plano para cualquier otro valor.
$xcrud->toast('Payment recorded.', 'success');
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
$message | string | - | Texto del toast |
$type | string | 'success' | success, error, info, o warning |
Pista de auditoría con set_logging()
->set_logging($enabled = true) escribe cada creación/actualización/eliminación que realiza el formulario de esta tabla en una tabla logs: nombre de tabla, acción, el usuario con sesión iniciada, el id del registro, los nuevos valores de campo y - para actualización/eliminación, cuando existe un estado previo que capturar - los propios valores de la fila justo antes del cambio (old_record). Desactivado por defecto, ya que añade una escritura extra (y, para actualización/eliminación, una lectura extra) en cada guardado.
$xcrud->set_logging(true);
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
$enabled | bool | true | Si se deben escribir filas de registro de auditoría para los cambios de esta tabla |