Welcome to the Cookbook

loading...
Please login to continue

4.1.2 Eine Regel pro Feld

Diese Definitions-Technik schafft eine bessere Kontrolle über die Funktionsweise der Validierungsregeln:

var $validate = array(
    'fieldName1' => array(
        'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
        'required' => true,
        'allowEmpty' => false,
        'on' => 'create', // or: 'update'
        'message' => 'Your Error Message'
    )
);
  1. var $validate = array(
  2. 'fieldName1' => array(
  3. 'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
  4. 'required' => true,
  5. 'allowEmpty' => false,
  6. 'on' => 'create', // or: 'update'
  7. 'message' => 'Your Error Message'
  8. )
  9. );

Wie man hier sehen kann, ist jedes Feld (nur ein Feld im obigen Beispiel) mit einem Array verknüpft, welches fünf Schlüsselwörter beinhaltet: ‘rule’, ‘required’, ‘allowEmpty’, ‘on’ und ‘message’. Alle Schlüsselwörter, ausser ‘rule’ sind optional. Laß uns all diese Schlüsselwörter näher Betrachten.

4.1.2.1 rule

Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:

Mehr Informationen zu Übersetzungen

Das ‘rule’ Schlüsselwort definiert die Validierungsmethode und erwartet einen einzelnen Wert oder ein Array. Der angegebene Wert für ‘rule’ kann der Name einer Methode des Models sein, eine Methode der Kern-Klasse Validation, oder eine regular expression. Eine komplette Liste aller integrierten Regeln ist im nächsten Kapitel "Mehrere Regeln pro Feld" dargestellt.

Falls die Regel keine Parameter benötigt, kann ‘rule’ auch ein einzelner Wert sein. z.B.:

var $validate = array(
    'login' => array(
        'rule' => 'alphaNumeric'
    )
);
  1. var $validate = array(
  2. 'login' => array(
  3. 'rule' => 'alphaNumeric'
  4. )
  5. );

Falls die Regel Parameter erwartet (wie z.B. max, min oder range) sollte ‘rule’ als Array ausgezeichnet werden:

var $validate = array(
    'password' => array(
        'rule' => array('minLength', 8)
    )
);
  1. var $validate = array(
  2. 'password' => array(
  3. 'rule' => array('minLength', 8)
  4. )
  5. );

Verigss nicht, das Schlüsselwort ‘rule’ wird für Array-basierte Regeldefinitionen benötigt.

4.1.2.2 required

Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:

Mehr Informationen zu Übersetzungen

Dieser Schlüssel sollte ein boolscher Wert sein. Falls ‘required’ TRUE ist, muss das Feld im Daten-Array existieren. Zum Beispiel wenn die Validierungsregel wie folgt definiert ist:

var $validate = array(
    'login' => array(
        'rule' => 'alphaNumeric',
        'required' => true
    )
);
  1. var $validate = array(
  2. 'login' => array(
  3. 'rule' => 'alphaNumeric',
  4. 'required' => true
  5. )
  6. );

Die Daten die zur save() Methode des Models gesendet werden, müssen das Feld 'login' enthalten. Wenn das nicht der Fall ist, schlägt die Validierung fehl. Der Standard-Wert dieses Schlüssels ist der boolsche Wert FALSE.

Ist der 'login' Schlüssel enthalten, jedoch leer, wird die Validierung erfolgreich sein. Ist der Schlüssel ‘required’ auf TRUE gesetzt, wird nur überprüft ob der Feldname existiert.

4.1.2.3 allowEmpty

Der Originaltext dieses Abschnitts hat sich seit der letzen Übersetzung geändert. Bitte hilf dabei die Unterschiede zu lösen. Du kannst:

Mehr Informationen zu Übersetzungen

Dem Schlüssel allowEmpty sollte ein boolscher Wert zugewiesen werden. Falls allowEmpty "false" ist, müssen jene Daten, die an die save()-Methode des Modells übergeben werden, den Feldnamen und einen nicht leeren Wert enthalten. Wird "true" gesetzt, bewirkt ein leeres Feld, dass die Gültigkeitsprüfung ausgelassen wird.

Der Standardwert von allowEmpty ist "null". Das bedeutet, dass das Feld immer auf die Gültigkeitsregeln hin überprüft wird und selbst erstellte Gültigkeitsregeln beachtet werden.

4.1.2.4 on

Der Schlüssel ‘on’ kann auf einen der folgenden Werte gesetzt werden: ‘update’ oder ‘create’ (ins Deutsche würde man ‘on’ mit dem umgangssprachlichen ‘beim’ übersetzen). Dies erlaubt Dir zu steuern, dass eine Regel wahlweise bei der Erstellung oder einem Update eines Datensatzes angewandt werden soll.

Wenn eine Regel ‘on’ => ‘create’ beinhaltet, so wird sie nur angewandt, wenn ein neuer Datensatz erstellt werden soll. Andersherum, wenn die Regel ‘on’ => ‘update’ enthält, wird sie nur bei einer Änderung eines Datensatzes beachtet.

Der Standardwert von ‘on’ ist "null". Wenn ‘on’ "null" ist wird die entsprechende Regel sowohl bei ‘update’ als auch bei ‘create’ angewandt.

4.1.2.5 message

Der Schlüssel ‘message’ erlaubt es Dir, eine eigene Fehlermeldung bzw. Verletzungsmeldung für diese Regel zu bestimmen:

var $validate = array(
    'password' => array(
        'rule' => array('minLength', 8),
        'message' => 'Password must be at least 8 characters long'
    )
);
  1. var $validate = array(
  2. 'password' => array(
  3. 'rule' => array('minLength', 8),
  4. 'message' => 'Password must be at least 8 characters long'
  5. )
  6. );

4.1.2.6 last

Den 'last' Schlüssel auf true zu setzen, lässt den Validator im Fehlerfall stoppen, anstatt mit der nächsten Regel fortzufahren. Dies ist praktisch, wenn man die Validierung beenden möchte, wenn das Feld einem multi-rule Feld notEmpty ist.

var $validate = array(
    'username' => array(
        'usernameRule-1' => array(
            'rule' => 'notEmpty',  
            'message' => 'Please enter a username.',
            'last' => true
         ),
        'usernameRule-2' => array(
            'rule' => array('minLength', 8),  
            'message' => 'Minimum length of 8 characters.'
        )  
    )
);
  1. var $validate = array(
  2. 'username' => array(
  3. 'usernameRule-1' => array(
  4. 'rule' => 'notEmpty',
  5. 'message' => 'Please enter a username.',
  6. 'last' => true
  7. ),
  8. 'usernameRule-2' => array(
  9. 'rule' => array('minLength', 8),
  10. 'message' => 'Minimum length of 8 characters.'
  11. )
  12. )
  13. );

Der Defaultwert für 'last' ist false.