有没有办法在 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 的数据类型从字符串更改为字节数组

cakephp从另一个表中将数据检索到控制器中

如果管理员在cakephp3.x中将其停用,如何限制db中的数据保存?

CakePHP 奇怪的 saveAll 问题。返回 true,但在数据库中没有任何内容

有没有办法在android studio中将音频文件转换为字节数组