我在cakePHP 1.26中的模型中获得了几行代码:
function beforeSave() {
$this->data['User']['pswd'] = md5($raw['User']['pswd']);
return true;
} // this beforeSave() works
上面的代码已经过测试,可以在我的数据库中使用
然而,我不确定我能否理解它,
所以,我以其他方式重新编写了代码,然后就失败了。
function beforeSave() {
$raw=$this->data;
$raw['User']['pswd'] = md5($raw['User']['pswd']);
return true;
} // this beforeSave() failed to work
为什么第二种方法不起作用?
答案 0 :(得分:3)
在这一行:
$raw=$this->data
您只是将$this->data
按值分配给$raw
。因此,当您更改$raw
的数组数据时,$this->data
不会受到更改的影响。
此外,您完全改变了代码的含义。您最终要做的是从您的模型中用$raw
替换 $this->data
的数据。我之前没有使用过CakePHP,但我认为$raw
已经包含了通过某种输入收到的所有原始数据,而模型中的$this->data
包含了旧版本的模型数据(例如,用户将要更改的旧密码)。您更改的代码将删除$raw
中的所有新数据,我认为这不是您打算从第一个代码示例中做出的判断。
为了解释这一行:
$this->data['User']['pswd'] = md5($raw['User']['pswd']);
这非常简单:pswd
User
数组$this->data
项被设置为pswd
数组中User
数组的MD5校验和$raw
。
答案 1 :(得分:2)
if($this->data['Register']['password'] == $this->data['Register']['confirm_password'])
{
return true;
}
else
{
return false;
}
在模型的beforeSave函数()
中使用它