/

Définir votre premier champ personnalisé

Une présentation ciblée d'un seul champ : changer son type, valider sa saisie, puis le verrouiller contre l'édition.

1. Changer le type

Commencez par ->change_type($field, $type, $length = '', $extra = []) pour choisir comment le champ s'affiche dans le formulaire :

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

Voir Aperçu des types de champs pour la liste complète des types disponibles.

2. Valider sa valeur

->validation_pattern($field, $pattern) exige que la valeur (non vide) d'un champ corresponde à une expression régulière dans le formulaire d'ajout/édition, appliquée à la fois côté client et côté serveur. $pattern est soit l'un des raccourcis nommés ci-dessous, soit un corps d'expression régulière littéral sans délimiteurs :

$xcrud->validation_pattern('email', 'email');
RaccourciCorrespond à
emailUne forme simple utilisateur@hôte
alphaLettres uniquement
alpha_numericLettres et chiffres
alpha_dashLettres, chiffres, tiret bas, trait d'union
numericUn nombre entier ou décimal, éventuellement négatif
naturalChiffres uniquement (un entier non négatif)
urlUne URL http:// ou https://

Pour tout le reste, passez un corps d'expression régulière littéral (sans slashs, sans drapeaux) :

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

Un champ vide passe seul la vérification du motif - associez-le à ->validation_required() pour aussi interdire de le laisser vide. Voir Validation des champs pour le dossier complet requis/motif.

3. L'afficher, mais bloquer l'édition

->readonly($field) et ->disabled($field) affichent tous deux un champ dans le formulaire tout en empêchant le visiteur de le modifier - la différence est purement esthétique (un champ au style lecture seule contre un contrôle grisé désactivé). Ni l'un ni l'autre n'est un contrôle de sécurité côté serveur : ils changent uniquement ce que le navigateur laisse un visiteur cliquer, pas ce que l'API accepte.

$xcrud->readonly('accountNumber');

Un visiteur qui appelle l'API REST directement, en contournant entièrement le formulaire, n'est pas du tout arrêté par readonly()/disabled(). La véritable barrière de sécurité consiste à mettre en liste blanche les colonnes réellement éditables - voir Sécurité : liste noire de tables & colonnes.

En pratique

$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();