Cakephp 2.x löschen funktioniert nicht

0

Ich versuche, einen Datensatz mit folgendem Code zu löschen:

im Controller:

    public function delete($id = null) {
    if (!$this->Modelname->exists($id)) {
        throw new NotFoundException(__('Modelname ungültig'));
    }

    $this->Modelname->id = $id;

    $this->request->onlyAllow('post', 'delete');
    if ($this->Modelname->delete()) {
        $this->Session->setFlash(__('Modelname wurde gelöscht.'));
        return $this->redirect(array('controller' => 'modelnames', 'action' => 'index'));
    }
    $this->Session->setFlash(__('Modelname wurde nicht gelöscht.'));
}

im Hinblick auf:

<?= $this->Form->postLink(__('Delete'), array('controller' => 'modelnames', 'action' => 'delete', $id), array('confirm' => 'Soll dieser Eintrag wirklich gelöscht werden?')) ?>

Normalerweise funktioniert das bei mir, aber jetzt aktualisiert es nur die Seite, ohne etwas zu tun.. mhh irgendwelche Ideen?

4
  • Diese Art von Frage ist für Stack Overflow nicht nützlich oder angemessen. Check out Zu welchen Themen kann ich hier fragen? . 21. März '17 um 10:24
  • Stellen Sie sicher, dass $id die URL korrekt durchläuft. Versuchen Sie auch, $this->request->onlyAllow('post', 'delete'); Leitung . 21. März '17 um 10:32
  • 1
    @drmonkeyninja Fragen, die Hilfe beim Debuggen suchen ("Warum funktioniert dieser Code nicht?") müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der erforderlich ist, um ihn in der Frage selbst zu reproduzieren. Fragen ohne klare Problemstellung sind für andere Leser nicht hilfreich. Ich kann das Problem nicht weiter verkleinern, als ich es gepostet habe; Geldautomat :)
    – Donny Doe
    21. März '17 um 10:54
  • @ManoharKhadka wenn ich das onlyAllow auskommentiere und den postLink in einen normalen Link ändere, "funktioniert" es (aber in meinen Augen ein bisschen "schmutzig"?), also denke ich, dass es ein Problem mit dem postLink gibt, das ich nicht bekomme.. : /
    – Donny Doe
    21. März '17 um 10:55
0

It looks like onlyAllow method is deprecated on the CakePHP version you are going through.

postLink funktioniert gut, da es äquivalentes HTML für die Post-Methode generiert.

Nun, wenn Sie nur eine bestimmte Anfrage (Posten, Löschen) zulassen müssen, können Sie Folgendes tun:

if ($this->request->is('post')) { // if this is a post request
   if (!$this->Modelname->exists($id)) {
        throw new NotFoundException(__('Modelname ungültig'));
    }

    $this->Modelname->id = $id;

    if ($this->Modelname->delete()) {
        $this->Session->setFlash(__('Modelname wurde gelöscht.'));
        return $this->redirect(array('controller' => 'modelnames', 'action' => 'index'));
    }
    $this->Session->setFlash(__('Modelname wurde nicht gelöscht.'));
}
2
  • onlyAllow() Methode ist unter CakePHP 2.4 nicht veraltet, sie beginnt mit 2.5.
    – tarikul05
    21. März '17 um 11:30
  • @tarikul05 Offensichtlich haben Sie Recht, aber das könnte trotzdem der Fall sein..oder die Version wird möglicherweise von OP aktualisiert. 21. März '17 um 11:34
0

Die Antwort ist einfach wie dumm..

TL;DR-Version:
Form in Form.... (funktioniert nicht)

lange Version:
Ich habe eine riesige Ansichtsseite zum Überarbeiten, auf der sich eine Art kleiner Formwrapper um eine Tabelle befindet, die ich beim Debuggen nicht erkannt habe.. (einfache Tabellenzeile auswählen - Sachen damit machen) Tabelle mussten wir zusätzliche Platzhalterdaten schieben, die zu einem bestimmten Zeitpunkt gelöscht werden können

Entschuldigung für die Zeitverschwendung, aber danke für die schnelle Hilfe! und danke für den "onlyAllow"-Tipp :)