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');
| Raccourci | Correspond à |
|---|---|
email | Une forme simple utilisateur@hôte |
alpha | Lettres uniquement |
alpha_numeric | Lettres et chiffres |
alpha_dash | Lettres, chiffres, tiret bas, trait d'union |
numeric | Un nombre entier ou décimal, éventuellement négatif |
natural | Chiffres uniquement (un entier non négatif) |
url | Une 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();