/

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ámetroTipoPor defectoDescripción
$columnstring-Columna cuyo valor mostrado se transforma
$callbackcallable|string-Nombre de función (resuelto mediante la convención functions.php) o un closure
$path?stringnullArchivo 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:

HookSe dispara
before_createAntes de construir el formulario de Añadir vacío
before_listAntes de obtener los datos de fila de la cuadrícula
before_insertAntes de escribir una fila nueva
after_insertDespués de escribir una fila nueva
before_updateAntes de escribir una fila existente
after_updateDespués de escribir una fila existente
before_removeAntes de eliminar una fila
after_removeDespué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ámetroTipoPor defectoDescripción
$messagestring-Texto del toast
$typestring'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ámetroTipoPor defectoDescripción
$enabledbooltrueSi se deben escribir filas de registro de auditoría para los cambios de esta tabla