尽管这是我在 2.x 中的第一个应用程序,但我对 CakePHP 并不完全陌生。我正在使用烘焙控制器和视图,但编辑功能有问题。
对于初学者来说,这是烤出来的:
public function edit($id = null) {
$this->User->id = $id;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
if ($this->request->is('post') || $this->request->is('put')) {
if ($this->User->save($this->request->data)) {
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
} else {
$this->request->data = $this->User->read(null, $id);
}
}
当这个被单独留下时
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
我被告知我的用户无效,即使我毫无疑问地知道该用户确实存在。
如果我将其更改为:
if (!$this->User->exists($id)) {
throw new NotFoundException(__('Invalid user'));
}
出现了正确的编辑表单,并填充了正确的数据,但是在保存时它会尝试插入而不是更新。
通常这是因为 CakePHP 没有可使用的 ID,但表单中有一个隐藏的 ID 字段,我什至试图通过在保存之前放置以下内容来强制解决此问题。
$this->request->data['User']['id'] = $id;
有什么想法吗?