【发布时间】:2017-08-28 17:39:27
【问题描述】:
我在 CakePHP 工作。在beforeSave() 中,我将数据库中的列值与即将保存的更新列值进行比较。我想将此数据传递给afterSave() 回调以确定回调的作用。有没有办法将数据从beforeSave() 传递到afterSave()?
【问题讨论】:
我在 CakePHP 工作。在beforeSave() 中,我将数据库中的列值与即将保存的更新列值进行比较。我想将此数据传递给afterSave() 回调以确定回调的作用。有没有办法将数据从beforeSave() 传递到afterSave()?
【问题讨论】:
您可以通过模型的save(array $data = null, array $params = array()) 函数将参数传递给您的回调beforeSave(array $options = array()) 和afterSave(boolean $created, array $options = 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
}
试试看:)
【讨论】:
我没有专门使用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;
}
【讨论】: