Пользователь начинает здесь:
/admin/cuisines/edit/16
Пользователь вводит что-то, что противоречит правилам проверки, и нажимает кнопку Отправить.Пользователь взят здесь:
/admin/cuisines/edit/16
Пользователь считает, что он действителен, и нажимает кнопку «Отправить» еще раз. Затем он принимается здесь:
/admin/cuisines/edit/
Пользователь исправляет свою ошибку, нажимает кнопку «Отправить», и вместо этогоредактирования, он сохраняет это как новый элемент в таблице, поскольку там нет идентификатора.
Мой код:
function admin_edit($id = null) { // EDIT ***********
if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Invalid cuisine', true));
$this->redirect(array('action' => 'index'));
}
if (!empty($this->data)) {
if ($this->Cuisine->save($this->data)) {
$this->Session->setFlash(__('The edits to this cuisine have been saved', true));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The edits to this cuisine could not be saved. Please, try again.', true));
}
}
if (empty($this->data)) {
$this->data = $this->Cuisine->read(null, $id);
}
}
Любые мысли о том, что я 'я делаю неправильно?Я думал, что сделал это так же, как учебник, но - я должен был бы предположить, что Cake достаточно умен, чтобы не допустить этого - то есть - я предполагаю, что я делаю что-то не так.