CakePHP: Input Validierung mit mehreren Regeln

Fast einen Monat ist es her seit dem letzten Post. Nur ein kleiner Tipp und auch kein besonders aufwändiger für multiple Validierungsfeldern pro Eingabefeld. Die Überprüfung eines Eingabefeld für eine deutsche Bankleitzahl könnte beispielsweise so im Model implementiert werden:

var $validate = array(
'blz' => array(
									'minLength' => array(
										'rule' => array('minLength', 8),
										'message' => 'Bitte geben Sie eine gültige Bankleitzahl eines deutschen Bankinstituts ein.'),
									'maxLength' => array(
										'rule' => array('maxLength', 8),
										'message' => 'Bitte geben Sie eine gültige Bankleitzahl eines deutschen Bankinstituts ein.'),
									'numeric' => array(
									'rule' => 'numeric',
									'required' => true,
									'message' => 'Bitte geben Sie nur Zahlen als Bankleitzahl ein.'))
)

CakePHP: Validierung ohne zu Speichern

Es kann vorkommen, da möchte man die Nutzereingaben in einem Formular zunächst nur validieren, bevor sie in der Datenbank gespeichert werden. Dies kann zum Beispiel bei einem Bestellvorgang sein, bei dem die eingegebenen Nutzerangaben noch einmal zur Übersicht dem Nutzer angezeigt werden soll und erst nach dieser Prüfung gesichert werden sollen.
Dafür stellt CakePHP die Methode ‘validates()‘ des Models bereit.

In der CakePHP-Dokumentation steht genau dieser Anwendungsfall beschrieben, jedoch überliest man auf die schnelle ggf. eine wichtige Stelle: Vor der Validierung müssen die Daten auf jeden Fall dem Model übergeben werden.

$this->Modelname->set($this->data);
if($this->Modelname->validates()) { #Alles ok, Überprüfungsseite anzeigen
#....
} else { #Daten validieren nicht
#...
}

CakePHP 1.3.4: Datenvalidierung und eine Warnung

Eventuell kommt die folgende Warnung bei einer Datenvalidierung im Model:

Warning (2): preg_match() [function.preg-match]: Empty regular expression [CORE/cake/libs/model/model.php, line 2596]

Die Warnung trat auf, als zwar der ‘rule’-Schlüssel im Validierungsarray angegeben wurde, er jedoch nur auf ‘false’ stand. Sobald eine Regel angegeben wird, tritt diese Warnung nicht mehr auf.
Es muss also immer eine Regel angegeben werden!

var $validate = array(
						'name' => array(
									'rule' => 'notEmpty',
									'required' => true,
									'message' => 'Bitte gib Deinen Nachnamen ein.'),
						'vorname' => array(
									'rule' => 'notEmpty',
									'required' => true,
									'message' => 'Bitte gib Deinen Vornamen ein.'),
						'email' => array(
									'rule' => array('email', true),
									'message' => 'Bitte gib Deine eMail-Adresse ein.'));