ZendFramework – Eindeutigen Datensatz prüfen

Das Zend Framework bietet mit seinen Validatoren sehr schöne Möglichkeiten, die Daten des Benutzers zu prüfen. Bisher habe ich immer im Controller geprüft, ob es einen Datensatz schon einmal gibt, wie z.B.: E-Mail Adresse, oder Benutzername. Doch es geht noch viel einfacher. Das ZendFramework bietet dafür die Klasse Zend_Validate_Db_NoRecordExists an. Diese erbt von der abstrakten Klasse Zend_Validate_Db_Abstract. Als Parameter gibt man in diesem Beispiel die Tabelle und die zu prüfende Spalte an.

Hier ein Beispiel der Benutzung in der Formklasse eureres Moduls

 
class User_Form_Register extends Zend_Form
{
    /**
     * Init the Registerform
     *
     * @return void
     */
    public function init()
    {
 
        $this->setAttrib('id', 'registerform');
        $this->setAction('/user/index/create');
 
        // ...
 
        // username
        $dbValUnique = new Zend_Validate_Db_NoRecordExists('user', 'username'); // Das DB ValidatorObjekt
        $username = new Zend_Form_Element_Text('username');
        $username->setLabel('Benutzername');
        $username->setRequired();
        $username->addValidator('regex', true, array('/^[a-z]/i'));
        $username->addValidator($dbValUnique); // Hinzufügen zum Element
 
        $this->addElement($username);
 
 
        // ...
 
 
        // e-mail
        $dbValUnique = new Zend_Validate_Db_NoRecordExists('user', 'email'); // Das DB ValidatorObjekt
        $email = new Zend_Form_Element_Text('email');
        $email->setLabel('E-Mail');
        $email->setRequired();
        $email->addValidator(new Zend_Validate_EmailAddress());
        $email->addValidator($dbValUnique); // Hinzufügen zum Element
 
        $this->addElement($email);
 
        // ...
 
    }
}
It's only fair to share...Flattr the authorShare on FacebookTweet about this on TwitterShare on LinkedInEmail this to someone

Related Posts:

3 thoughts on “ZendFramework – Eindeutigen Datensatz prüfen”

Leave a Reply

Your email address will not be published. Required fields are marked *

Comment moderation is enabled. Your comment may take some time to appear.