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
-~----------~----~----~----~------~----~------~--~---