我在CakePHP工作。在beforeSave()
中,我将数据库中的列值与即将保存的更新列值进行比较。我想将此数据传递给afterSave()
回调以确定回调的作用。有没有办法将数据从beforeSave()
传递到afterSave()
?
答案 0 :(得分:1)
您可以从模型的beforeSave(array $options = array())
函数向您的回调afterSave(boolean $created, array $options = array())
和save(array $data = null, array $params = array())
传递参数。
这是一个例子
//In your controller
$this->Post->save($data, array('arg1' => $value));
//In the Post Model
beforeSave($options = array()){
// $options contains the arg1 param
}
afterSave($created, $options = array()){
// $options contains the arg1 param
}
尝试一下:)
答案 1 :(得分:0)
我还没有专门与cakePHP
合作,但如果它与其他一些MVC框架类似,则beforeSave()
和afterSave()
回调会在类似的情况下执行上下文(它们属于同一个对象 - 模型或控制器)。
如果是这种情况,一个简单的解决方案就是使用自定义类属性来跟踪您的数据。
private $custom;
beforeSave(){
// save what you want to access later
$this->custom = 'comparison result';
}
afterSave(){
// retrieve what we found in beforeSave()
$custom = $this->custom;
}