Ihr erstes individuelles Feld definieren
Ein fokussierter Durchgang durch ein einzelnes Feld: seinen Typ ändern, seine Eingabe validieren und es dann für die Bearbeitung sperren.
1. Den Typ ändern
Beginnen Sie mit ->change_type($field, $type, $length = '', $extra = []), um festzulegen, wie das Feld im Formular gerendert wird:
$xcrud->change_type('email', 'text');
Die vollständige Liste verfügbarer Typen finden Sie unter Feldtypen im Überblick.
2. Seinen Wert validieren
->validation_pattern($field, $pattern) verlangt, dass der (nicht-leere) Wert eines Feldes im Hinzufügen-/Bearbeiten-Formular einem Regex entspricht, durchgesetzt sowohl client- als auch serverseitig. $pattern ist entweder eine der folgenden benannten Abkürzungen oder ein wörtlicher Regex-Körper ohne Begrenzungszeichen:
$xcrud->validation_pattern('email', 'email');
| Abkürzung | Entspricht |
|---|---|
email | Einer einfachen user@host-Form |
alpha | Nur Buchstaben |
alpha_numeric | Buchstaben und Ziffern |
alpha_dash | Buchstaben, Ziffern, Unterstrich, Bindestrich |
numeric | Eine Ganzzahl oder Dezimalzahl, optional negativ |
natural | Nur Ziffern (eine nicht-negative Ganzzahl) |
url | Eine http://- oder https://-URL |
Für alles andere übergeben Sie einen wörtlichen Regex-Körper (keine Schrägstriche, keine Flags):
$xcrud->validation_pattern('sku', '^[A-Z]{2}-\d{4}$');
Ein leeres Feld besteht eine Muster-Prüfung für sich genommen - kombinieren Sie sie mit ->validation_required(), um auch das Leerlassen zu verbieten. Die vollständige Beschreibung von required/pattern finden Sie unter Feldvalidierung.
3. Anzeigen, aber Bearbeitung blockieren
->readonly($field) und ->disabled($field) zeigen beide ein Feld im Formular an, verhindern aber, dass der Besucher es ändert - der Unterschied ist rein kosmetisch (ein readonly-gestyltes Eingabefeld gegenüber einem ausgegrauten, deaktivierten Steuerelement). Keines von beiden ist eine serverseitige Sicherheitskontrolle: Sie ändern nur, was der Browser einen Besucher anklicken lässt, nicht, was die API akzeptiert.
$xcrud->readonly('accountNumber');
Ein Besucher, der die REST-API direkt aufruft und dabei das Formular komplett umgeht, wird durch readonly()/disabled() überhaupt nicht aufgehalten. Die eigentliche Sicherheitsgrenze ist, von vornherein zu whitelisten, welche Spalten bearbeitbar sind - siehe Sicherheit: Tabellen & Spalten sperren.
Alles zusammen
$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();