Bonjour,
J'ai un problème lors de la redirection de la fonction admin_delete. Lorsque je veux supprimer un article sur la page admin_index.php, j'obtiens le bon url : http://localhost/Tutoriels/site/cockpit/posts/delete/3. Cependant j'ai une erreur : Warning: require(C:\wamp\www\Tutoriels\site\view\posts\admin_delete.php). Il recherche donc une vue et non une fonction dans le controller.
Voilà si quelqu'un pourrait m'éclairer, merci
A la fin de ta fonction admin_delete fait un $this->redirect('site/cockpit/posts/index'); et ça devrait régler le soucis ;) . Si tu mets une fonction dans le controller principal elle sera bien considérée comme fonction, si tu la mets dans un sous-controller (Posts/Medias etc...) la fonction sera en quelques sortes éxécutés comme une vue. Ce qui fait que lorsque tu demandes de faire la fonction on te renvoie sur la vue admin_delete qui n'existe pas ainsi en faisant une redirection tu n'auras plus ce soucis puisque tu seras à la fin de la fonction redirigé vers la page d'accueil.
Hélas j'ai bien essayé ceci mais toujours la même erreur. L'erreur viendrait de la ligne : require($view); dans la fonction render de Controller.php.
Copie et colle ta fonction render alors ^^
Voici ma fonction delete:
/** Permet de supprimer un article
**/
function admin_delete($id){
$this->loadModel('Post');
$this->Post->delete($id);
$this->Session->setFlash('Le contenu a bien été supprimé.');
$this->redirect('admin/pages/index');}
Voici ma fonction render :
public function render($view){
if($this->rendered){return false;}
extract($this->vars);
if(strpos($view,'/')===0){
$view = ROOT.DS.'view'.$view.'.php';
}else{
$view = ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
}
ob_start();
require($view);
$content_for_layout = ob_get_clean();
require ROOT.DS.'view'.DS.'layout'.DS.$this->layout.'.php';
$this->rendered=true;
}