Salut à tous.

J'ai un petit soucis depuis ce matin avec mon projet.
Lorsque j'arrive sur ma page d'accueil, tout vas bien.
(www.cakephp.mondomaine.com)

J'ai une barre de navigation avec deux "link", un pour la connexion et l'autre pour l'inscription.
Malheureusement, lorsque je clique sur l'un d'eux, je n'ai que le lien qui change.
(www.cakephp.mondomaine.com/user/login ou bien www.cakephp.mondomaine.com/user/signup.)
Je reste uniquement sur la page d'accueil.

Quelqu'un aurai une idée de l'endroit d'ou pourrai provenir mon problème ?

Merci

19 réponses


Bonjour,

Regardes tes routes, peut être as tu une règle dans ce style là :

Router::connect('/*', array('controller' => 'controller', 'action' => 'index'));

Qui fait pointer toutes les URLs vers une seule fonction.
Tiens nous au courant ;)

Cordialement,
PallMallShow

Je n'ai jamais toucher mon fichier routes.php .
Voilà les routes que j'ai dans mon fichier.

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

Tu utilise le Helper pour tes liens ? (Peut tu nous montrer le code de tes liens ?)

Edit : As tu des

$this->layout = [...];

Dans tes controllers ?

Donc sur ma page d'accueil, qui est la default.ctp, voila mes liens.

                        <?php if(AuthComponent::user('id')): ?>
                        <div class="form-group">
                        <li><?php echo $this->Html->link("Se déconnecter",'/users/logout'); ?></li>
                        <li><?php echo $this->Html->link("Mes patients", array('action'=>'patient','controller'=>'patients')); ?>
                        <li><?php echo $this->Html->link("Mon compte",array('action'=>'edit','controller'=>'users')); ?></li></div>
                        <?php else: ?>   
                        <div class="form-group">
                        <li><?php echo $this->Html->link("Se connecter",array('action'=>'login','controller'=>'users')); ?></li>
                        <li><?php echo $this->Html->link("S'inscrire",array('action'=>'signup','controller'=>'users')); ?></li></div>
                        <?php endif; ?>

Quand tu rentre l'URL à la main dans ton navigateur, tu arrive sur quel page ?
Exemple si tu rentre tondomaine.fr/user s /login ?

C'est grace à ça que j'ai remarquer que c'était effectivement un soucis d'URL.
Quand je rentre mon URL a la main, je reste sur ma page d'accueil.
Et même si je fais un mondomaine.fr/blabla/yarienquimarche, je reste sur ma page d'accueil mais ma page charge quand même.

L'URL rewrite est bien accepté sur ton serveur ? (Accepté et activé ?)

J'utilise un serveur 1&1.

.htaccess "/"

AddType x-mapp-php5 .php
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

.htaccess "/app"

AddType x-mapp-php5 .php
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]

.htaccess "/app/webroot"

AddType x-mapp-php5 .php
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

C'est ce que j'ai récup sur la doc cake.

Dans tout les cas, si jamais je change quoi que ce soit dans un seul des trois fichier, je me retrouve avec un INTERNAL SERVER ERROR.

Essai d'écrire une route et commente les autres :

Router::connect('/login', array('controller' => 'users', 'action' => 'login'));

Et rentre ça dans l'URL, tu tombe toujours sur la même page ?

J'ai commenter les deux routes et copier coller celle que tu m'as donné.
Rien ne change mis à part sur le bouton de connexion ou la, l'URL est cakephp.mondomaine.com/login au lieu de cakephp.mondomaine.com/users/login.
Sinon toujours la page d'accueil en affichage. :/

Ce qui est quand même incroyable, c'est que tout marchait parfaitement avant ça... :O
Mon serveur 1&1 utilise la version 5.5 de PHP. Et ma version cake est la 2.5.7.
Il ne pourrai pas y avoir de problèmes d'incompatibilité ?

Après avoir regardé la doc, il semble pas y avoir d'incompatibilité.

Peut être que ça pourrait t'aider => http://www.grafikart.fr/forum/topics/2351

EDIT : Voir même celui là qui peut être intéressant : Stackoverflow (Pense bien à faire une sauvegarde avant)

J'ai déjà épluché ce topic. Je vais essayer de trifouiller un peu dedant, et si jamais je trouve quelque chose, je posterai la solution ici.
Sinon je reviendrai sans rien x)

Bon, et bien je suis à cours d'idée. Je sais pas du tout quoi faire.

Vois directement avec 1&1 peut être !

Je vais voir ce que je peux faire. Merci du coup de main en tout cas.

Bon après-midi :)

Bon courage pour la suite ;)

Est-ce que tu as pensé à bien intégrer le contenu dans ton layout ?

<?= $this->fetch('content'); ?>

Bonsoir.
Donc sur ma page d'accueil, qui est la default.ctp, voila mes liens.

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*'*, array('controller' => 'pages', 'action' => 'display'));

Je crois que tu as un problème de compréhension là, quand tu parles de default.ctp, ça doit être le layout default.ctp, car d'après les routes que tu n'as pas changé, ta page d'accueil serait la page home.ctp, du controller Pages.
Je ne vois donc pas comment la racine de ton site (la page d'accueil), pourrait être autre chose.

Est ce que tu utilises le Component Auth ?
As tu bien mis dans le beforeFilter de ton UserController :

$this->Auth->allow('login', 'signup');

Ensuite pour accéder aux actions sans modifier les Routes, c'est le nom du controller au pluriel :
www.cakephp.mondomaine.com/users/login et non www.cakephp.mondomaine.com/user/login comme tu l'as écrit.