Delete AJAX / Appel de controller

Archos
Invité n'ayant pas de compte PHPfrance

20 févr. 2015, 15:48

Bonjour,

je suis en train de créer un backend en MVC (avec Slim, Twig et Eloquent) permettant de gérer des news, entre autres.
J'ai le listing dynamique de mes news avec pour chacune la possibilité de la supprimer:
<tr>
       <th scope="row">{{ news.id }}</th>
        <td><input type="checkbox"></td>
        <td>
             <a href="" class="ajax_delete" id="{{ news.id }}">Supprimer/i></a>
         </td>
        <td>{{ news.titre }}</td>
</tr>
Ensuite je fais mon appel AJAX mais je ne sais pas trop comment m'y prendre. J'ai une très mince connaissance d'Ajax jusqu'ici.
[javascript]
<script type="text/javascript">
$(document).ready(function(){
$(".delete_class").click(function(){
var del_id = $(this).attr('id');
$.ajax({
type:'delete',
url: 'j\'aimerai/Appeler/Mon/Controller/Delete',
data:'delete_id='+del_id,
success:function(data) {
if(data) {
// Suppression de la ligne + Notification de succès
}
},
error: function() {
// Notification d'erreur
}
});
});
});
</script>
[/javascript]

Le traitement correct est d'appeler la méthode delete($id) de mon contrôleur dans le paramètre url d'ajax ?

Merci

Mammouth du PHP | 688 Messages

20 févr. 2015, 16:34

cela me semble une bonne base.

après il vaudrait mieux accorder ces violons :
$(".delete_class").click(function(){
<a href="" class="ajax_delete"

Archos
Invité n'ayant pas de compte PHPfrance

20 févr. 2015, 18:09

Erreur de typo ;p

Voilà où j'en suis pour le moment:
[javascript]
$(document).ready(function(){
$(".ajax_delete").click(function(){
var del_id = $(this).attr('id');
var myTr = $(this).parent().parent();
console.log(del_id);
$.ajax({
type:'POST',
url:'{{ path }}/Controller/AdminController/deleteNews',
data: 'id=' + del_id,
success:function(data) {
if(data) {
myTr.remove();
console.log(data);
alert('supprimé');
}
},
error: function() {
alert('error');
}
});
});
});
[/javascript]
Le problème c'est que je n'arrive pas à accéder à mon contrôleur, qui se présente comme ceci:
<?php
namespace Controller;
use Model\Actualite;

class AdminController extends BaseController

public function deleteNews($id){
        $news = Actualite::find($id);
        $news->delete();
    }
Je rentre bien dans le if(data) car au moment de la suppression ça me retourne l'alerte "supprimé".
Le console.log(data) me retourne une erreur me disant Class 'Controller\BaseController' not found in...mon url (l'url est bien la bonne), c'est le extends BaseController qui bloque.. J'ai donc enlevé mon extends (car il n'est pas indispensable pour effectuer l'action de suppression), là plus d'erreur mais cependant rien ne se passe, l'objet ne se supprime pas en BDD ;/