Am Dienstag, 1. Januar 2008 schrieb Dirk Olbertz:
> Das ist leider gar nicht so einfach, wobei ich bei einigen Sachen
> nicht genau weiß, ob das ein Bug in CakePHP 1.2.x ist, oder so
> beabsichtigt ist.
>
> Du musst auf jeden Fall das zweite Passwortfeld mit einem anderen
> Namen versehen. Also z.B. "password_confirm" statt nur "password".
> Ich hatte nun mal versucht, einfach eine eigene Methode für die
> Validierung anzugeben und darin dann "password" und
> "confirm_password" zu vergleichen. Seit einer bestimmten CakePHP
> 1.2.x Version sind dort dann aber nur noch die Felder vorhanden, die
> auch in der Datenbank sind. Also kannst Du das dann leider nicht über
> die Validierung machen, sondern musst das händisch im Controller
> machen:

Hi Dirk, hi Christian, hi Liste,

mann muss das nicht unbedingt im Controller ausführen. Zwecks MVC-Design 
würde ich folgendes machen (ist natürlich diskutabel :-)):

View => add.ctp:
<?php
  echo $form->create('User');
  echo $form->input('username');
  echo $form->input('password');
  echo $form->input('password_confirmation', array('type'=>'password'));
  echo $form->input('email');
  echo $form->submit('Registrieren');
  echo $form->end();
?>

im Controller für add-Aktion => users_controller.php:

  function add()
  {
    if (!empty($this->data))
    {
      $this->User->create();
      if ($this->User->save($this->data))
      {
        $this->Session->setFlash('The User has been saved');
        $this->redirect(array('action'=>'index'), null, true);
      }
      else
      {
        $this->Session->setFlash('The User could not be saved. Please, 
try again.');
      }
    }
  }

und im Model user.php:

<?php

class User extends AppModel
{
  var $name = 'User';

  var $validate = array (
      'username' => array(
          array(
            'rule' => array('minLength', 6),
            'message' => 'Dein Benutzername muss mindestens 6 Zeichen 
lang sein'
          ),
          array(
            'rule' => array('maxLength', 40),
            'message' => 'Dein Benutzername darf nicht länger als 40 
Zeichen lang sein'
          )
      ),
      'password' => array(
          array(
            'rule' => array('minLength', 6),
            'message' => 'Dein Benutzername muss mindestens 6 Zeichen 
lang sein'
          ),
          array(
            'rule' => array('maxLength', 40),
            'message' => 'Dein Benutzername darf nicht länger als 40 
Zeichen lang sein'
          )
      ),
      'password_confirmation'    =>  array(
          'rule' => 'passwordCompare',
          'message' => 'Passwörter nicht gleich'
      ),
      'email'=> array(
          'validEmail' => array(
              'rule' => array('required' => VALID_EMAIL),
              'message' => 'Dies ist keine korrekte Email-Adresse'
          ),
          'length' => array(
              'rule' => array('maxLength',100),
              'message' => 'Das Feld darf nicht mehr als 100 Zeichen 
enthalten'
          )
      )
  );

  function passwordCompare()
  {
    $compare = false;
    if($this->data['User']['password'] == $this->data['User']
['password_confirmation'])
    {
      $compare = true;
    }
    return $compare;
  }

}

?>

Ich hoffe ich hab' nicht allzuviel Fehler dabei gemmacht.

Viele Grüße
Trenc

--~--~---------~--~----~------------~-------~--~----~
Sie erhalten diese Nachricht, weil Sie Mitglied sind von Google Groups-Gruppe 
"CakePHP-de für deutsche CakePHP Entwickler".
 Für das Erstellen von Beiträgen in dieser Gruppe senden Sie eine E-Mail
an [email protected]
 Um sich von dieser Gruppe abzumelden, senden Sie eine E-Mail an [EMAIL 
PROTECTED]
 Weitere Optionen finden Sie in dieser Gruppe unter 
http://groups.google.com/group/cakephp-de?hl=de
-~----------~----~----~----~------~----~------~--~---

Antwort per Email an