有没有办法在 cakePHP 中将数据从 beforeSave() 传递到 afterSave()?
Posted
技术标签:
【中文标题】有没有办法在 cakePHP 中将数据从 beforeSave() 传递到 afterSave()?【英文标题】:Is there a way to pass data from beforeSave() to afterSave() in cakePHP? 【发布时间】:2017-08-28 17:39:27 【问题描述】:我在 Cakephp 工作。在beforeSave()
中,我将数据库中的列值与即将保存的更新列值进行比较。我想将此数据传递给afterSave()
回调以确定回调的作用。有没有办法将数据从beforeSave()
传递到afterSave()
?
【问题讨论】:
【参考方案1】:您可以通过模型的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
试试看:)
【讨论】:
【参考方案2】:我没有专门使用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;
【讨论】:
太棒了!谢谢!以上是关于有没有办法在 cakePHP 中将数据从 beforeSave() 传递到 afterSave()?的主要内容,如果未能解决你的问题,请参考以下文章
在 CakePHP 3.0 的 add 方法中将附加数据保存到连接表
有没有办法在 Asp.Net Core Identity 中将 PasswordHash 的数据类型从字符串更改为字节数组
如果管理员在cakephp3.x中将其停用,如何限制db中的数据保存?