Validator-Klasse
Aus MAXcms
Zwingende Voraussetzung für die Verwendung dieser Klassen ist das inkludieren folgender Datei und PHP 5 (wegen Dereferenzierung, abstrakten Klassen, Sichtbarkeit usw.):
include_once(thCMS_root.'/classes/Validation/class.Validator.php');
Das ganze funktioniert wie folgt:
// Erzeugen einer Validator-Instanz
$oValidator = new Validator();
// Ein neues Objekt hinzufügen, welches Validiert werden soll
$oValidator->addField('username', Util::_stripSlashes($_POST['username']))->addRule(new NotEmptyValidationRule(), 'username_empty');
// Eine weitere Regeln zum gleichen Objekt hinzufügen
$oValidator->getField('username')->addRule(new LoginNotExistsValidationRule(), 'username_empty');
// Ein neues Objekt hinzufügen, welches Validiert werden soll
$oValidator->addField('email', Util::_stripSlashes($_POST['email']))->addRule(new EmailValidationRule(), 'email_not_valid');
[...]
// Validierung der Objekte starten
$oValidator->validate();
// Abfragen ob alle Objekte valide sind
if($oValidator->isValid())
{
[...]
}
else
{
// Alle fehlerhaften Objekte erhalten und sich deren Fehlermeldung zurückgeben lassen
$invalid_fields = $oValidator->getInvalidFields();
foreach($invalid_fields as $invalid_field)
{
foreach($invalid_field->getErrors() as $error)
{
[...]
}
}
}
Es gibt bereits ein Grundgerüst an Regeln, mit denen die Objekte Validiert werden können:
// Nicht valide, wenn das zu validierende Objekt bereits als E-Mail Adresse in MAXcms registriert ist new EmailNotExistsValidationRule() // Valide, wenn das zu validierende Objekt bereits als E-Mail Adresse in MAXcms registriert ist new EmailNotExistsValidationRule(true) // Nicht valide, wenn das zu validierende Objekt bereits als Loginname in MAXcms registriert ist new LoginNotExistsValidationRule() // Valide, wenn das zu validierende Objekt bereits als Loginname in MAXcms registriert ist new LoginNotExistsValidationRule(true) // Nicht valide, wenn das zu validierende Objekt eines der Wörter enthält, die dem Konstruktor als Array übergeben werden new TextContainsValidationRule($words) // Nicht valide, wenn das wenn das zu validierende Objekt leer ist new NotEmptyValidationRule() // Nicht valide, wenn die Länge des zu validierende Objekts nicht den Vorgaben entspricht, die dem Konstruktor übergeben wurden // Wird nur $min übergeben, wird nur auf die minimale Länge gerprüft // Wird für $min -1 und für $max ein Wert > 0 übergeben, wird nur auf die maximale Länge gerprüft // Werden beide Werte übergeben, muss die Zeichenkette minimal $min und maximal $max Zeichen lang sein, damit es Valide ist new LengthValidationRule($min, $max) // Nicht valide, wenn die Anzahl der Elemente des zu validierende Objekts (ein Array) nicht den Vorgaben entspricht, die dem Konstruktor übergeben wurden // Wird nur $min übergeben, wird nur auf die minimale Anzahl gerprüft // Wird für $min -1 und für $max ein Wert > 0 übergeben, wird nur auf die maximale Anzahl gerprüft // Werden beide Werte übergeben, muss das Array minimal $min und maximal $max Einträge haben, damit es Valide ist new ItemsCountValidationRule($min, $max) // Nicht valide, wenn das zu validierende Objekt mit dem im Konstruktor übergebenen Wert nicht übereinstimmt new IsEqualToValidationRule($compare)
Man kann beliebig viele Validation-Rules hinzufügen, wichtig ist nur, dass diese Klassen vorher inkludiert werden und von der abstrakten Klasse 'ValidationRule' erben.
Hier ein Beispiel:
class ExampleValidationRule extends ValidationRule
{
public function __construct()
{
}
public function validate($a_value)
{
return true;
}
}
