【发布时间】:2015-04-16 01:48:27
【问题描述】:
我有一个beforeSave-callback,只要我创建一个新实体,它就会被调用。但是,当我在编辑时,它根本没有被调用。
在文档中找不到任何有用的内容。
这是我的编辑功能:
public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid article'));
}
$article = $this->Articles->get($id);
if ($this->request->is(['post', 'put'])) {
$this->Articles->patchEntity($article, $this->request->data);
if ($this->Articles->save($article)) {
$this->Flash->success(__('Your article has been updated.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Unable to update your article.'));
}
$this->set('article', $article);
}
【问题讨论】:
-
您确定您的保存操作一开始就做到了那么远吗?即,它成功了吗?因为如果是这样,那么我会有点怀疑事件没有被分派,因为这发生在插入和更新的同一方法中。
-
请把
beforeSave-callback的代码也贴出来。 -
我确定是因为记录被修改了。在我的 beforeSave 中,我只是调用了一个 die(),所以它不会在我不注意的情况下调用它。
-
好吧,如果记录正在被保存,那么事件正在被调度,除非调度器被破坏。检查
$this->Articles实例是否真的是实现了回调方法的实际表类(debug(get_class($this->Articles)))的实例,而不是“自动表”(Cake\ORM\Table的实例),还要确保您不要惹Table::implementedEvents()。 -
今晚晚些时候会检查并回复您。感谢您的帮助。
标签: cakephp callback edit cakephp-3.0