Der richtige Weg, dies zu tun, besteht darin, einen Validator im Schema zu verwenden und dann mit der validate()
-Methode in Ihrem Code zu überprüfen. Hier ist ein Beispiel:
...
...
Dann könnten Sie in Ihrem preSave()
-Code etwas wie dies tun:
class User extends BaseUser {
...
public function preSave(PropelPDO $con = null) {
// besteht das Objekt alle Validierungen?
if (!$this->validate()) {
$errors = array();
// etwas ist fehlgeschlagen, gehen Sie durch jedes Versagen und erfassen Sie die Meldung:
foreach ($this->getValidationFailures() as $failure) {
$errors[] = $failure->getMessage();
}
// durch das Werfen einer Ausnahme wird das Speichern gestoppt
throw new InvalidArgumentException(implode("||", $errors));
}
return true; // wenn Sie hierhin gelangen, speichern Sie fort
}
}
In Ihrem Skript würden Sie save()
wie folgt aufrufen:
...
$user = new User();
try {
// Versuchen Sie, zu speichern (könnte fehlschlagen)
$user->save();
} catch (InvalidArgumentException $e) {
// wir haben Fehler, splitten Sie die Ausnahmemeldung, um jede separat zu bekommen
$errorMessages = preg_split(/\|\|/, $e->getMessage());
// behandeln Sie die Meldungen, wie Sie müssen
}
Erfahren Sie mehr über Validators in der Propel-Dokumentation.