1

我已经在我的视图中提交了一个表单,它将在控制器中处理。通常发生的是控制器通过执行以下操作保存编辑:

if ($this->Requests->save($request)) {
    // the request have been saved.
}

现在我创建了另一个插入查询,以使用 afterSave() 语句跟踪编辑器的活动,如下所示:

public function afterSave()
{
    // here I need the data submitted from $this->request->save($request));
    // how can I do this to use the data in the query?

    // insert query here.
}

我想使用 afterSave() 因为我想将它用于对请求所做的所有更改,但我似乎找不到访问发布数据的方法。

文档说 afterSave() 包含以下参数:

afterSave(Event $event, EntityInterface $entity, ArrayObject $options)

我需要这些来完成我想要的吗?如果是这样,我该如何正确使用它们?因为我似乎无法获得任何调试信息来查看它包含的保存操作。

问题如下:

如何访问$this->Requests->save($request)在 beforeSave() 或 afterSave() 语句中保存的数据以在另一个查询中使用数据?

4

2 回答 2

4

如何访问在 beforeSave() 或 afterSave() 语句中使用 $this->Requests->save($request) 保存的数据以在另一个查询中使用数据?

两个回调的第二个参数是实体数据。除非您需要整个请求,否则您可以从第二个 arg 获取编组器转换为实体的所有数据$entity。检查有关方法的文档:

我不知道你的问题是什么,但在debug($entity);那里做会显示实体数据。如果不是您的代码中有其他问题。

只需使用实体在那里做任何你想做的事情。

于 2016-01-27T14:05:34.127 回答
0

此代码段可能有用:

use Cake\Event\Event;
public function afterSave(Event $event)
{
    $entity = $event->getData('entity');
   if(!empty($entity)){
       // your submission code here
   }
}
于 2019-03-20T09:56:51.163 回答