我有一个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);
}
4条答案
按热度按时间7qhs6swi1#
beforeSave
函数只有在您发布/编辑的数据被修改时才会被触发。tmb3ates2#
我也遇到了教程在这一点上卡住的问题,但是我使用bin/cake bake命令自动生成ArticlesTable代码,它添加了这个验证器:
当我注解requirePresence()时,它为我解决了这个问题。如果您有requirePresence('fieldName','create')进行验证,那么在创建新的Article实体时,如果您在帖子上没有该字段,您将得到一个错误。
62lalag43#
是的,您需要使用
Event
和Entity
对象:请检查以下示例:
gajydyqb4#
编写相同代码的另一种方法: