Wenn sich ein Benutzer für meine Anwendung registriert, werden die folgenden Validierungsregeln vor dem Absenden aufgerufen:
public function rules()
{
return array(
array('email, firstName, lastName, password, passwordConfirm, telephone', 'required'),
array('club, email, firstName, lastName, level, password, telephone', 'length', 'max'=>45),
array('passwordConfirm', 'compare', 'compareAttribute'=>'password', 'on'=>'register'),
array('email', 'isUniqueEmailAddress'),
);
}
Die ersten drei Validierungsregeln werden erfolgreich abgeschlossen, die vierte (eine benutzerdefinierte Validierungsmethode) jedoch nicht. Sie sollte die Funktion "isUniqueEmailAddress" aufrufen und das Folgende ausführen:
/*
* Returns true if there doesn't exist a user in the database with the submitted email
*/
public function isUniqueEmailAddress($attribute, $params)
{
//if (User::model()->find('email=:email', array(':email'=>$this->email)) !== null)
//{
$this->addError('email', 'Email account already exists');
//}
}
Wie Sie sehen können, habe ich sogar alle Logik auskommentiert, um einfach sicherzustellen, dass ein Validierungsfehler an das Registrierungsformular zurückgeschickt wird, aber keine Fehler an validation() zurückgegeben werden. Ich habe gelesen Yii's Dokumentation und habe die Foren durchforstet, kann aber nicht verstehen, warum meine benutzerdefinierte Validierungsmethode nicht aufgerufen wird?