0

我在 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

为什么第二种方法行不通?

4

2 回答 2

3

在这一行:

$raw=$this->data

您只是$this->data按值分配给$raw. 所以当你改变$raw数组数据时,$this->data不会受到改变的影响。

此外,您完全改变了代码的含义。你最终要做的是用你的模型替换 $raw's 数据。$this->data我以前没有使用过 CakePHP,但我假设$raw已经包含您通过某种输入收到的所有原始数据,而$this->data在您的模型中包含模型数据的旧版本(例如,用户的旧密码)会改变)。您更改的代码只会删除 中的所有新数据$raw,从您的第一个代码示例来看,我认为这不是您打算做的事情。

给你一点解释这一行:

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

这很简单:数组中的pswd项设置为数组中的MD5 校验和。User$this->datapswdUser$raw

于 2010-06-12T17:52:15.280 回答
2
if($this->data['Register']['password'] == $this->data['Register']['confirm_password'])
{
   return true;
}
else
{
   return false;
}

在模型的 beforeSave 函数中使用它()

于 2011-03-04T11:10:04.783 回答