我已在视图中提交了一份表格,该表格将在控制器中处理。通常发生的是控制器通过这样做保存编辑:
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(),因为我想将它用于对请求所做的所有更改,但我似乎无法找到访问已发布数据的方法。
The documentation表示afterSave()包含以下参数:
afterSave(Event $event, EntityInterface $entity, ArrayObject $options)
我需要这些来完成我想要的吗?如果是这样,我该如何正确使用它们?因为我似乎无法获得任何调试信息以查看它包含保存操作的内容。
问题如下:
如何在beforeSave()或afterSave()语句中访问使用$this->Requests->save($request)
保存的数据以在另一个查询中使用该数据?
答案 0 :(得分:4)
如何在beforeSave()或afterSave()语句中访问使用$ this-> Requests-> save($ request)保存的数据,以便在另一个查询中使用该数据?
两个回调的第二个算法是实体数据。除非您需要整个请求,否则您可以将编组所转换的所有数据从第二个arg $entity
获取到实体中。查看方法文档:
我不知道你的问题是什么,但是debug($entity);
会显示实体数据。如果您的代码中没有其他错误。
只需使用实体做任何你想做的事。
答案 1 :(得分:0)
此代码段可能会有用:
use Cake\Event\Event;
public function afterSave(Event $event)
{
$entity = $event->getData('entity');
if(!empty($entity)){
// your submission code here
}
}