4.1 Datenvalidierung
Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:
Die Validierung von Daten ist ein enorm wichtiger Teil in jeder Anwendung. Sie hilft, sicherzustellen, dass die Daten in einem Model mit den Business Rules der Anwendung übereinstimmen. Zum Beispiel könntest Du sicher stellen wollen, dass Passwörter mindestens acht Zeichen lang sind oder dass Benutzernamen einzigartig sind. Validierungsregeln festzulegen macht die Verarbeitung von Formularverarbeitung wesentlich einfacher.
Es gibt viele verschiedene Aspekte im Validierungsprozess. In diesem Abschnitt möchten wir dies aus Sicht des Models abdecken, im Wesentlichen was passieren soll, wenn Du die save()-Methode Deines Models aufrufst. Mehr Informationen zur Darstellung der Validierungsfehler finden sich im Abschnitt zum FormHelper.
Der erste Schritt zur Validierung, ist die Festlegung der Validierungsregeln im Model. Diese Regeln werden im Model::validate-Array in der Definition Deiner Modelklasse dargestellt, zum Beispiel:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array();
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array();}?>
Im diesem Beispiel wurde das $validate-Array im User-Model definiert, es beinhaltet aber keine Regeln. Angenommen, die users-Tabelle besteht aus den Feldern login, password, email und born, zeigt das folgende Beispiel einige simple Validierungsregeln, die sich auf diese Felder beziehen:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => 'alphaNumeric',
'email' => 'email',
'born' => 'date'
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => 'alphaNumeric','email' => 'email','born' => 'date');}?>
Das folgende Beispiel zeigt, wie Validierungsregeln zu den Model-Feldern hinzugefügt werden können. Das login-Feld soll nur aus Buchstaben und Zahlen bestehen, die E-Mail-Adresse soll gültig sein und das born-Feld soll ein gültiges Datum sein. Durch die Definition dieser Regeln kann CakePHP automagisch Fehlermeldungen in Formularen anzeigen, wenn dieses nicht valide sind.
CakePHP besitzt viele eingebaute Validierungsregeln, deren Benutzung einfacher nicht sein könnte. Einige der eingebauten Regeln erlauben Dir, die Formatierung von E-Mail-Adressen, URLs und Kreditkartennummern, zur überprüfen - dazu später mehr.
Hier ein etwas komplexeres Beispiel, in welchem einige der eingebauten Regeln verwendet werden:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => array(
'alphanumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Alphabets and numbers only'
),
'between' => array(
'rule' => array('between', 5, 15),
'message' => 'Between 5 to 15 characters'
)
),
'password' => array(
'rule' => array('minLength', '8'),
'message' => 'Mimimum 8 characters long'
),
'email' => 'email',
'born' => array(
'rule' => 'date',
'message' => 'Enter a valid date',
'allowEmpty' => true
)
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => array('alphanumeric' => array('rule' => 'alphaNumeric','required' => true,'message' => 'Alphabets and numbers only'),'between' => array('rule' => array('between', 5, 15),'message' => 'Between 5 to 15 characters')),'password' => array('rule' => array('minLength', '8'),'message' => 'Mimimum 8 characters long'),'email' => 'email','born' => array('rule' => 'date','message' => 'Enter a valid date','allowEmpty' => true));}?>
Für das Feld login sind zwei Regeln definiert: es darf nur aus Buchstaben und Zahlen bestehen und zwischen fünf und 15 Zeichen lang sein. Dass Passwort muss mindestens acht Zeichen lang sein. Außerdem müssen E-Mail-Adresse Gebursdatum gültig sein. Hier siehst Du auch, wie man eigene Fehlermeldungen einbauen kann, falls die Validierung fehlschlägt.
Wie das Beispiel zeigt, kann ein einzelnes Feld mehrerer Validierungsregeln besitzen. Falls die eingebauten Regeln nicht ausreichen, können eigene definiert werden.
Jetzt, wo Du einen groben Überblick über die Validierung hast, lass uns lernen, wie Regeln im Model definiert werden. Es gibt hier drei verschiedene Wege: einfache Arrays, eine Regel pro Feld und mehrere Regeln pro Feld.


























