2010-06-12 20 views
0

我得到了一個HTML表單兩個簡單的輸入文本字段:對於捕獲的數據如下控制器的動作beforeSave()返回的一些錯誤

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

腳本:

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 

而且在模型控制器中,我得到了這些代碼行:

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

數據已成功存儲到數據庫中,但它wa沒有經過任何MD5加密。
我認爲模型的腳本中一定會有一些錯誤,因爲我在數據保存後看到一些錯誤
閃爍,但是顯示錯誤
的屏幕在成功保存數據後立即刷新一秒
和I看不到導致問題的錯誤的細節。

你能幫助我嗎?

編輯:

我已經改變beforeSave的代碼,但它仍然無法工作:

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

回答

2

$raw是一個局部變量,因此beforeSave方法之外不存在。根據您的使用情況,您可以簡單地覆蓋用戶提交的值:

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