2010-06-12 6 views
0

je suis arrivé deux champs de saisie de texte simples dans un formulaire HTML:beforeSave() retourne une erreur

<input type="text" name="data[User][name]" id="data[User][name]"> 
<input type="text" name="data[User][pswd]" id="data[User][pswd]">  

Les scripts pour l'action du contrôleur qui a capturé les données sont les suivantes:

function register(){ 
      $temp = $this->data;      
      if(strlen($temp['User']['pswd'])>6) {   
      if ($this->User->save($this->data)) { 
      $this->Session->setFlash('Data was Saved');   
               } 
            }   
     } // this script works 

Et dans le contrôleur de modèle, je suis arrivé ces lignes de codes:

function beforeSave() { 
    $raw = $this->data; 
if(strlen($raw['User']['pswd'])>6){ 
    md5($raw['User']['pswd']);   
} 
return true; 
         } // this script failed to work 

les données ont été enregistrées dans la base de données avec succès mais wa s n'a subi aucun cryptage MD5.
Je pense qu'il doit y avoir quelques erreurs dans le script du modèle parce que j'ai vu quelques erreurs
flashé après l'enregistrement des données, mais l'écran qui a montré les erreurs
immédiatement actualisé en une seconde après que les données ont été sauvegardées avec succès
et je n'a pas pu voir le détail des erreurs qui ont causé le problème.

Pourriez-vous m'aider s'il vous plaît?

Modifié:

J'ai modifié le code de beforeSave, mais il ne fonctionne toujours pas:

function beforeSave() { 
    $raw = $this->data; 
if(strlen($raw['User']['pswd'])>3){ 
    $raw['User']['pswd'] = md5($raw['User']['pswd']);  
} 
return true; 
         } 

Répondre

2

$raw est une variable locale et donc n'existe pas en dehors de la méthode beforeSave . En fonction de votre cas d'utilisation, vous pouvez simplement remplacer la valeur soumise par l'utilisateur:

$this->data['User']['pswd'] = md5($raw['User']['pswd']);

Questions connexes