2017-03-21 1 views
0

im essayant de supprimer un enregistrement avec le code suivant:CakePHP 2.x supprimer ne fonctionne pas

dans le contrôleur:

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.')); 
} 

dans Vue:

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

Habituellement, cela fonctionne pour moi, mais maintenant il suffit de rafraîchir la page sans rien faire ... Mhh des idées?

+0

Ce genre de question n'est pas utile ou approprié pour Stack Overflow. Découvrez [Quels sujets puis-je poser à propos ici?] (Http://stackoverflow.com/help/on-topic). – drmonkeyninja

+0

assurez-vous que $ id passe correctement à travers url .. également essayer de commenter $ this-> request-> onlyAllow ('post', 'delete'); ligne . –

+1

@drmonkeyninja Les questions qui demandent une aide au débogage ("pourquoi ce code ne fonctionne-t-il pas?") Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Je ne peux pas réduire le problème plus que j'ai posté le problème (je voudrais juste comprendre comment les choses fonctionnent - et je pensais que c'est un problème minimal que je pourrais éviter à l'avenir et obtenir une vision claire de didnt travail atm :) –

Répondre

0

Il ressemble à la méthode onlyAllow est dépréciée sur la version CakePHP que vous traversez.

postLink fonctionne bien car il génère un code html équivalent pour la méthode post-traitement.

Eh bien, si vous avez besoin pour permettre que la demande particulière (poste, supprimer) là, vous pouvez faire suivant soit:

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.')); 
} 
+0

La méthode 'onlyAllow()' n'est pas obsolète sur CakePHP 2.4, elle commence à partir de la 2.5. – tarikul05

+0

@ tarikul05 Evidemment, vous avez raison, mais cela pourrait être le cas ... ou la version pourrait être mise à jour par OP. –

0

La réponse est simple aussi stupide ..

TL; la version DR:
formulaire dans le formulaire .... (ne fonctionne pas)

version longue:
i a une grande page en vue de travailler sur, où il y a eu une sorte de petite formwrapper autour d'une table, qui Je n'ai pas reconnu lors du débogage de ce truc .. (simple sélection de la ligne de table - faire des trucs avec eux chose) dans ce tableau nous avons dû pousser extra placeholderdata qui peut être supprimé à un moment précis .. le delete via cake postLink (qui génère un forme) ne fonctionne pas comme vous le savez .. et vous connaissez le reste de l'histoire

Désolé pour perdre votre temps, mais merci pour l'aide rapide! et merci pour le "onlyAllow" tipp :)