Ich bin nicht gerade neu in CakePHP, obwohl dies meine erste App in 2.x ist. Ich verwende die gebackene Steuerung & Ansicht und habe ein Problem mit der Bearbeitungsfunktion.Bearbeitungsfunktion ist INSERT anstelle von UPDATE CakePHP 2.1
Für den Anfang, hier ist das, was gebacken wurde:
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);
}
}
Wenn diese
allein gelassen wirdif (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
Mir wurde gesagt, dass ich einen ungültigen Benutzer haben, auch wenn ich ohne Zweifel wissen dass der Benutzer existiert.
Wenn ich es dies zu ändern:
if (!$this->User->exists($id)) {
throw new NotFoundException(__('Invalid user'));
}
Die richtige bearbeiten Form kommt, und mit den korrekten Daten gefüllt, aber dann auf speichern versucht es statt Update INSERT.
In der Regel ist dies, weil CakePHP keine ID hat, mit zu arbeiten, aber es ist ein verstecktes ID-Feld im Formular und ich habe sogar versucht, das Problem zu erzwingen, indem Sie Folgendes vor dem Speichern.
$this->request->data['User']['id'] = $id;
Irgendwelche Ideen, was hier vor sich geht?
=> „Ich habe auch mit der Brechstange versucht“. für mich sollte es korrekt aktualisieren ... hast du die $ id debuggen? ist es bei POST leer? Sie müssen die "ID" als versteckte Eingabe im Formular belassen, um auf die richtige URL (mit angehängter ID) zu posten - das könnte Ihr Problem hier sein. – mark
Ich denke du hast Recht. Ich fühle mich dumm, wenn ich nicht mehr nachforsche, aber ich habe versucht, mit dem ID-Parameter auf die Bearbeitungsseite zu kommen und füllt das Formular trotzdem "richtig" aus (es gibt nur einen Benutzer in der Tabelle, so dass er mit diesem Benutzer gefüllt wird) von dem, was ich für die ID in der URL eingeben). Ich muss herausfinden, was hier oben ist. – Tspesh
debug() Ihre Daten in der Zeile vor dem Speichern und veröffentlichen Sie es in Ihrer Frage. – Dave