Bonjour à tous,

J'ai un souci avec cakephp et je cherche la solution depuis une semaine.

Dans mon projet, après avoir ajouter ou éditer un article, je voudrais rediriger vers la page d'accueil du site.
Au début de mon développement tout fonctionnait sans problème et depuis une semaine (sans avoir modifier l'application) la ligne "$this->redirect(array('controller'=>'pages','action'=>'home'));" m'affiche une page blanche en gardant l'url de la page d'édition.
Les éléments sont bien enregistrés dans la base, ce qui me fait dire que c'est la redirection qui ne fonctionne pas.
J'ai essayé d'envoyer sur une url externe "connue' (à savoir google) mais ça ne marche pas non plus.

Franchement je ne vois pas de quoi ça peut venir.

J'ai essayé de réinstaller cakephp sans résultat.

Un point qui a peut-être son importance, juste après l'instal, Cake me dit que l'url rewrite ne fonctionne pas. est-ce que ça peut avoir un lien ? En sachant que j'ai rien modifier sur mon serveur apache

Config : MAC , serveur MAMP, essais sur navigateurs Safari et chrome

désolé si mes questions sont un peu bêtes mais là je nage.

voici le code de ma fonction :

public function edit($id = null){
        $c = $this->Recette->Category->find('list',array(
                'recursive'=>-1,
                'fields'=>array('id','name')
                )
        );
        $this->set('categ',$c);
        if($this->request->is('put') || $this->request->is('post')){
            $this->Recette->set($this->request->data);
            if($this->Recette->save()){
                $this->Session->setFlash('La recette a bien été mise à jour.');
                $this->redirect(array('controller'=>'pages','action'=>'home'));
            }       
        }
        if($id){
            $this->Recette->id = $id;
            $this->request->data = $this->Recette->read();
        }

    }

Pour info, ce n'est pas mon code d'origine mais une copie d'un message du forum. Une personne avait le même problème que moi. Malheureusement chez moi ça ne fonctionne pas mieux

Dernière chose, quand je tape manuellement l'adresse http://localhost:8888/Monsite/pages/home, ma page d'accueil s'affiche correctement.

12 réponses


Essai:

$this->redirect(array('controller'=>'pages','action'=>'display', 'home'));

ou sinon directement:

$this->redirect('/');

Et il faut activer le mod_rewrite sur le serveur, a voir selon ton hébergeur.

schoubz
Auteur

Merci pour ta réponse, mais malheureusement ça ne fonctionne pas.

ce que je n'arrive pas à comprendre c'est que les règles de réécriture doivent fonctionner parce que lorsque j'accède au dossier d'installation de Cake il me redirige bien vers la page qui correspond à : Controller=>Pages, action=>home. En gros le truc par défaut de Cake.

Tu est en local ou sur serveur distant ?

schoubz
Auteur

Je suis en local. J'utilise Mamp

Tu a vérifier si le mod_rewrite était activé sur le serveur apache ?

schoubz
Auteur

Oui c'est bon
J'ai aussi modifié le fichier httpd.conf comme indiqué sur le site de Cake

Huum la j'avoue que je sais pas trop, a tu modifier le controller pages ?
Et montre moi ton fichier route.php

J'utilise aussi MAMP et j'ai eu le même problème il y a peu de temps.
Par contre tout est rentrer dans l'ordre et je ne sais pas pourquoi ... désolé de ne pas pouvoir t'aider.

schoubz
Auteur

voici mon fichier route.php :

<?php
/**
 * Routes configuration
 *
 * In this file, you set up routes to your controllers and their actions.
 * Routes are very important mechanism that allows you to freely connect
 * different urls to chosen controllers and their actions (functions).
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link http://cakephp.org CakePHP(tm) Project
 * @package app.Config
 * @since CakePHP(tm) v 0.2.9
 * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
 */
/**
 * Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's urls.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
/**
 * Load all plugin routes. See the CakePlugin documentation on 
 * how to customize the loading of plugin routes.
 */
    CakePlugin::routes();
/**
 * Load the CakePHP default routes. Remove this if you do not want to use
 * the built-in default routes.
 */
    require CAKE . 'Config' . DS . 'routes.php';

Le controller Pages est rester d'origine (comme le fichier routes)

J'ai essayé aussi de réinstaller MAMP, pas mieux ....

Help !!!

Essai de faire une installation vierge de cakephp et de ne rien modifier et voir si tu arrive a accéder a la page.
Sinon je ne peut pas être d'une plus grande aide car je voie pas d'ou sa peut venir

As tu trouvé une solution a ton probleme ? car j'ai le meme souci

Essai de mettre $this->redirect('ton url');