2011-01-12 5 views
15

ich ein Anmeldeformular haben und ich einen Datensatz in beiden Benutzer und dem Identitäts-Tabellen (ein Benutzer hasMany Identitäten)cakephp eine Form, mehrere Modelle, die Anzeige nicht ein Modell Nachrichten Validierung des

die Form sieht aus wie dieses

Schaffung

Ich bekomme alle Validierungsfehlermeldungen für User.* Felder aber Identity.* Felder werden ohne Nachrichten angezeigt.

screenshot

Validierungsregeln:

Identität:

var $validate = array(
     'name' => array(
      'notempty' => array(
       'rule' => 'notempty',    
       'required' => true, 
       'message' => 'Your name is required.' 
      ) 
     ), 
     'surname' => array(
      'notempty' => array(
       'rule' => 'notempty',    
       'required' => true, 
       'message' => 'Your surname is required.' 
      ) 
     ), 
     'email' => array(
      'validateEmail' => array(
       'rule' => 'validateEmail',    
       'required' => true, 
       'message' => 'The email seems invalid.' 
      ), 
      'notempty' => array(
       'rule' => 'notempty', 
       'message' => 'You have to enter an email address.' 
      ) 
     ), 
    ); 

Benutzer:

var $validate = array(
     'pass' => array(
      'required' => array(
       'rule' => array('custom','/^.*[0-9].*$/i'), 
       'message'=>'Password must contain numbers'), 
      'length' => array(
       'rule' => array(
        'minLength',8), 
        'message' => 'Password must be at least 8 characters long') 
     ), 
     'pass_confirm' => array(
      'required' => array(
       'rule' => 'notempty', 
       'message' => 'You have to confirm the password' 
      ), 
      'length' => array( 
       'rule' => 'validatePassword', 
       'message'=>'Your passwords don\'t match!') 
     ), 
     'username' => array(
      'unique' => array(
       'rule' => 'validateUniqueUsername', 
       'message' => 'Username is already taken, please choose a different one.' 
      ), 
      'notempty' => array(
       'rule' => 'notempty', 
       'message' => 'You have to choose a username.' 
      ) 
     ), 
    ); 

Antwort

12

hasMany Felder Modell als Array sein sollte (, wenn sie mit Eltern Modell kombiniert), siehe .0 hinzugefügt zwischen Feldnamen

echo $this->Form->input('Identity.0.name'); 
echo $this->Form->input('Identity.0.surname'); 
... 
echo $this->Form->input('Identity.0.email'); 
+2

Machen Sie '$ this-> User-> saveAll ($ data);' in Ihrem Controller? – Ish

+0

Danke, jetzt funktioniert es gut;] Ich weiß nicht, warum es getan hat, was es für die paar Sekunden getan hat, aber es ist ok, endlich;] – Elwhis

5

Eine Antwort, die ich war auf this page viel über das gleiche Problem gefunden. Die Lösung bestand darin, das Validierungsattribut saveAll hinzuzufügen.

Verwandte Themen