Je m'attaque ce matin à la construction d'un blog avec la possibilité de mettre plusieurs catégories pour un même article. J'arrive très bien a gérer l'ajout des catégories, l'ajout des liaisons mais je bloques pour la suppression.
Je liste les catégories déjà ajouter pour un article dans la partie édition de l'article de la façon suivante :
<ul class="categories">
<?php foreach($categories as $category):?>
<li class="category-list"><?php echo $this->Html->link('X',array('action' => 'deletecategory', $category'CategoriesPost']'id']));?> <?php echo $category'Category']'name'];?></li>
<?php endforeach; ?>
</ul>
Je pensais alors qu'en ajoutant dans mon controller la function admin_deletecategory() ca fonctionnerait ...
function admin_deletecategory($id) {
$this->Post->CategoriesPost->delete($id);
$this->Session->setFlash("La catégorie a bien été supprimée",'success');
$this->redirect($this->referer());
}
Ni il ne supprime la liaison ni il ne me redirige vers la page d'édition.
Est-ce que quelqu'un voit ou ça cloche ?
Non pas d'erreur mais pas contre rien ne se passe et j'atterit sur une page vierge ...
Aie aie aie ... Un truc qui n'as rien a voir avec la suppression de la liaison apparait que je modifie la fonction deletecategories :
function admin_deletecategory($id) {
$this->Post->CategoriesPost->delete($id);
$this->Session->setFlash("La catégorie a bien été supprimée",'success');
$this->redirect($this->referer());
}
pour
function admin_deletecategory($id) {
$this->loadModel('CategoriesPost');
$this->CategoriesPost->delete($id);
$this->Session->setFlash("La catégorie a bien été supprimée",'success');
$this->redirect($this->referer());
}
Fatal Error (256): [MissingActionException] Action CategoriesController::admin_menu() could not be found.
#0 C:\Wamp\www\floriantruchot.fr\lib\Cake\Routing\Dispatcher.php(107): Controller->invokeAction(Object(CakeRequest))
#1 C:\Wamp\www\floriantruchot.fr\lib\Cake\Routing\Dispatcher.php(89): Dispatcher->_invoke(Object(CategoriesController), Object(CakeRequest), Object(CakeResponse))
#2 C:\Wamp\www\floriantruchot.fr\lib\Cake\Core\Object.php(102): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse), Array)
#3 C:\Wamp\www\floriantruchot.fr\app\View\Elements\posts_menu.ctp(1): Object->requestAction(Array)
#4 C:\Wamp\www\floriantruchot.fr\lib\Cake\View\View.php(598): include('C:\Wamp\www\flo...')
#5 C:\Wamp\www\floriantruchot.fr\lib\Cake\View\View.php(320): View->_render('C:\Wamp\www\flo...', Array)
#6 C:\Wamp\www\floriantruchot.fr\app\View\Layouts\default.ctp(47): View->element('posts_menu')
#7 C:\Wamp\www\floriantruchot.fr\lib\Cake\View\View.php(598): include('C:\Wamp\www\flo...')
#8 C:\Wamp\www\floriantruchot.fr\lib\Cake\View\View.php(414): View->_render('C:\Wamp\www\flo...')
#9 C:\Wamp\www\floriantruchot.fr\lib\Cake\View\View.php(376): View->renderLayout('
SQLSTATE[42...', 'default') #10 C:\Wamp\www\floriantruchot.fr\lib\Cake\Controller\Controller.php(900): View->render('error500', NULL) #11 C:\Wamp\www\floriantruchot.fr\lib\Cake\Error\ExceptionRenderer.php(280): Controller->render('error500') #12 C:\Wamp\www\floriantruchot.fr\lib\Cake\Error\ExceptionRenderer.php(255): ExceptionRenderer->_outputMessageSafe('error500') #13 [internal function]: ExceptionRenderer->pdoError(Object(PDOException)) #14 C:\Wamp\www\floriantruchot.fr\lib\Cake\Error\ExceptionRenderer.php(165): call_user_func_array(Array, Array) #15 C:\Wamp\www\floriantruchot.fr\lib\Cake\Error\ErrorHandler.php(127): ExceptionRenderer->render() #16 [internal function]: ErrorHandler::handleException(Object(PDOException)) #17 {main} [CORE\Cake\Error\ErrorHandler.php, line 136]
PS : J'ai fait un debug() à toute les lignes de ma fonction en enlevant le setFlash et la redirection. Et j'ai fait un debug($id); pour voir voir si l'id passait bien et c'est le cas a chaque fois Cake me retourne le bon id. et pour le debug de la fonction delete il m’affiche aussi l'id.