Bonjour,
Je suis en train de développer mon premier site avec le framework cakePHP en localhost, et donc je suis encore un débutant dans ce domaine.
Le problème que j'ai, c'est lorsque j'utilise la méthode redirect rien ne se passe. Par exemple lorsque je supprime une ligne dans ma base de donnée toute de suite après j'utilise la méthode redirect pour revenir à la page où tous les éléments de ma base de données sont afficher. L'élément se supprime mais par contre je reste bloquer sur une page blanche localhost/.../delete/23 !
Alors si quelqu'un à déjà eu ce problème, faite moi signe.
Merci d'avance
Hello,
As-tu un message d'erreur a quelque part ?
(check ton fichier core.php pour le mode debug est bien à 2)
Sinon, Check t'es fichiers php qu'il n'y ai pas d'espace après la fermeture de la balise php. Et aussi avant la balise d'ouverture.
@+
Si tu affiches ton code, ce sera plus facile pour aider :)
Sinon $this->redirect('/'); (pour la racine) mais tu peux préciser un tableau comme avec la méthode link du helper HTML comme ceci array('controller' => 'monController', 'action' => 'monAction');
Voici un class dans laquelle j'utilise la méthode redirect (cf fonction admin_delete, la dernière fonction),
<?php
class LiensController extends AppController{
var $paginate = array( 'limit' => 5,
'order' => array( 'Lien.created' => 'asc'));
public function index(){
$data = $this->paginate('Lien');
$this->set('data', $data);
}
public function admin_index(){
$data = $this->paginate('Lien');
$this->set('data', $data);
}
public function admin_edit($id = null){
$data = array();
if($id != null){
if($this->request->is('post')){
$data = current($this->request->data);
$this->Lien->save(array(
'id' => $data'id'],
'name' => $data'name'],
'description' => $data'description'],
'created' => getdate(),
'creator' => 'data',
'url' => $data'url']
));
$this->redirect(array('aciton' => 'index'));
}else{
$data = current($this->Lien->find('first', array(
'conditions' => array('id' => $id)
)));
}
}
$this->set('data', $data);
}
public function admin_add(){
if($this->request->is('post')){
$data = current($this->request->data);
$this->Lien->save(array(
'name' => $data'name'],
'description' => $data'description'],
'created' => getdate(),
'creator' => 'data',
'url' => $data'url']
));
$this->redirect(array('aciton' => 'index'));
}
}
public function admin_delete($id = null){
if($id){
$this->Lien->delete($id);
$this->Session->setFlash("Le lien a été supprimé");
$this->redirect(array('controller' => 'liens', 'action' => 'index'));
}
}
}
Lignes 12 et 20, il me semble que c'est paginate avec un grand P (tu ne t'adresses pas à la variable mais à l'objet)
Merci Kamduras j'ai mis action au lieu aciton mais le problème persiste toujours. Pour la ligne 12 et 20 j'ai mis une majuscule et le comportement est toujours le même.
bon je pense pas que ça changera rien, mais il est fortement conseillé de toujours ajouter un exit() après un redirect().
Je te remercie Keisuke, tout fonctionne, j'avais un retour à la ligne avant le début de ma balise php.
Merci merci