Salut
J'ai un problème au niveau de la régénération du mot de passe il ne reconnait pas le champs passoword2
Règle de validation
'password' => array(
array(
'rule' => 'notEmpty',
'message' => "Le mot de passe ne peut pas être vide",
'allowEmpty' => false
),
array(
'rule' => array('identicalFieldValues', 'password2'),
'message' => "Les passwords doivent être identique"
)
),
la règle personnalisé
public function identicalFieldValues( $field=array(), $compare_field=null ){
foreach( $field as $key => $value ){
$v1 = $value;
$v2 = $this->data$this->name]$compare_field];
if($v1 !== $v2) return false;
else continue;
}
return true;
}
Dans ma vue passord.ctp j'ai ce formulaire
<?= $this->Form->create('User'); ?>
<?= $this->Form->input('password', array('label' => "Mot de passe")); ?>
<?= $this->Form->input('password2', array('type' => 'password', 'label' => "Confirmer Mot de passe")); ?>
<?= $this->Form->end("Modifier"); ?>
Quand je fait un débug le résultat des deux mots de passe est correcte :
$field = array(
'password' => ' *****'
)
$compare_field = 'password2'
$key = 'password'
$value = '36286a18024265068c2c7a68588f2e009d6aab00'
$v1 = '36286a18024265068c2c7a68588f2e009d6aab00'
Merci de votre aide en avance
Ca ne serait pas plutôt :
'password' => array(
'rule' => 'notEmpty',
'message' => "Le mot de passe ne peut pas être vide",
'allowEmpty' => false
),
'password2' => array(
'rule' => 'identicalFieldsValues',
'message' => "Les passwords doivent être identiques"
),
Et la règle :
public function identicalFieldsValues($check, $limit){
$field = key($check);
return $check$field] == $this->data'User']'password'];
}
Perso, c'est ce que j'ai et ça fonctionne très bien ...