/

Definir tu primer campo personalizado

Un recorrido enfocado en un solo campo: cambia su tipo, valida su entrada y luego bloquéalo para edición.

1. Cambiar el tipo

Empieza con ->change_type($field, $type, $length = '', $extra = []) para elegir cómo se renderiza el campo en el formulario:

$xcrud->change_type('email', 'text');

Consulta Resumen de tipos de campo para la lista completa de tipos disponibles.

2. Validar su valor

->validation_pattern($field, $pattern) exige que el valor (no vacío) de un campo coincida con una expresión regular en el formulario de Añadir/Editar, aplicado tanto en el cliente como en el servidor. $pattern es uno de los atajos con nombre siguientes, o el cuerpo literal de una expresión regular sin delimitadores:

$xcrud->validation_pattern('email', 'email');
AtajoCoincide con
emailUna forma simple usuario@host
alphaSolo letras
alpha_numericLetras y dígitos
alpha_dashLetras, dígitos, guion bajo, guion
numericUn número entero o decimal, opcionalmente negativo
naturalSolo dígitos (un entero no negativo)
urlUna URL http:// o https://

Para cualquier otro caso, pasa el cuerpo literal de una expresión regular (sin barras, sin flags):

$xcrud->validation_pattern('sku', '^[A-Z]{2}-\d{4}$');

Un campo vacío pasa una comprobación de patrón por sí solo - combínalo con ->validation_required() para también prohibir dejarlo en blanco. Consulta Validación de campos para la explicación completa de required/pattern.

3. Mostrarlo, pero bloquear la edición

->readonly($field) y ->disabled($field) muestran ambos un campo en el formulario mientras impiden que el visitante lo cambie - la diferencia es puramente cosmética (un input con estilo readonly frente a un control deshabilitado en gris). Ninguno es un control de seguridad del lado del servidor: solo cambian lo que el navegador permite hacer clic a un visitante, no lo que acepta la API.

$xcrud->readonly('accountNumber');

Un visitante que llame a la API REST directamente, saltándose el formulario por completo, no queda detenido por readonly()/disabled() en absoluto. El verdadero límite de seguridad es poner en lista blanca qué columnas son editables desde el principio - consulta Seguridad: listas negras de tablas y columnas.

Uniéndolo todo

$xcrud = Xcrud::get_instance();
$xcrud->table('customers');
$xcrud->route('customers');

$xcrud->change_type('email', 'text');
$xcrud->validation_pattern('email', 'email');
$xcrud->readonly('accountNumber');

$xcrud->render();