我在HTML表单中有两个简单的输入文本字段:
<input type="text" name="data[User][name]" id="data[User][name]">
<input type="text" name="data[User][pswd]" id="data[User][pswd]">
Controller捕获数据的操作脚本如下:
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
在Model控制器中,我得到了以下几行代码:
function beforeSave() {
$raw = $this->data;
if(strlen($raw['User']['pswd'])>6){
md5($raw['User']['pswd']);
}
return true;
} // this script failed to work
数据已成功存储到数据库中,但未经过任何MD5加密
我认为模型脚本中必定存在一些错误,因为我看到一些错误在保存数据后闪现,但显示错误的屏幕在成功保存数据后立即刷新
我无法看到导致问题的错误细节。
编辑:
我已经修改了beforeSave的代码,但它仍然无法工作:
function beforeSave() {
$raw = $this->data;
if(strlen($raw['User']['pswd'])>3){
$raw['User']['pswd'] = md5($raw['User']['pswd']);
}
return true;
}
答案 0 :(得分:2)
$raw
是一个局部变量,因此不存在于beforeSave
方法之外。根据您的使用情况,您可以简单地覆盖用户提交的值:
$this->data['User']['pswd'] = md5($raw['User']['pswd']);