Bonjour,

Voila je rencontre un petit problème avec mon code.

Dans mon Template/Layout/default.ctp j'ai mon menu avec 2 liens :

<li><?= $this->Html->link(__('Murmurer'), ['controller' => 'Murmures', 'action' => 'index']); ?></li>
<li><?= $this->Html->link(__('Répondre'), ['controller' => 'Answers', 'action' => 'index']); ?></li>

Mon 2ème lien marche parfaitement et envoie bien vers le controller Answers et sa fonction index.
Le problème est à mon premier lien. Au lieu de m'envoyer vers mon controller Murmures et sa fonction index (http://localhost/projet1/murmures), il m'envoie vers ce lien : http://localhost/speakzik/webroot/murmures/
Pourtant j'ai bien un controller MurmuresController.php, un model MurmuresTable.php et une vue dans Template/Murmures/index.ctp
Donc tout est configuré comme dans Answers, c'est pour ça que je ne vois pas du tout d'où peut venir le problème.

De plus lorsque je rentre l'url : http://localhost/projet1/murmures, celà bug et m'envoie toujours vers http://localhost/speakzik/webroot/murmures/, mais quand je rentre l'url avec sa fonction : http://localhost/projet1/murmures/index, ça ne bug pas et m'envoi bien vers la page index du controller murmures.

Je précise que je débute en CakePHP, donc l'erreur est peut-être bête mais j'ai été dessus toute la journée et je ne trouve vraiment aucune solution, même avec mes recherches sur internet.
J'espère vraiment que quelqu'un pourra m'aider, cela me permettra de poursuivre mon projet.

EDIT : Je viens de trouver une solution, en utilisant ça ça marche :

$this->Html->link(__('Murmurer'), '/Murmures/index');

Mais j'aimerais quand même avoir des informations sur mon problème, si quelqu'un peut m'expliquer pour mieux comprendre.

Merci

6 réponses


PEDR0
Auteur
Réponse acceptée

$this->Url->build permet de générer une url.
Donc si je veux l'utiliser il faut que je fasse :

<?= $this->Html->link(__('Murmures'), $this->Url->build([
                        'controller' => 'Murmures',
                        'action' => 'index'
                    ])); ?>

Mais à ce moment là autant utiliser :

<?= $this->Html->link(__('Murmures'), '/murmures/index'); ?>

En tout cas avec cette dernière solution ça marche, donc je vais continuer en mettant '/murmures/index' au lieu de ['controller' => 'Murmures', 'action' => 'index'].
En tout cas merci pour ton aide Xen0risDEV.

Bonsoir, essayer :

<li><?= $this->Html->link(__('Murmurer'), ['controller' => 'Murmures', 'action' => 'index', '_full' => true]); ?></li>
<li><?= $this->Html->link(__('Répondre'), ['controller' => 'Answers', 'action' => 'index']); ?></li>
PEDR0
Auteur

Bonsoir,
Merci pour votre réponse rapide mais malheureusement, ça me renvoi toujours vers http://localhost/speakzik/webroot/murmures/
J'avais essayé après avoir vu cette option dans le book de cakephp et je viens de réessayer mais toujours pas...

Bonsoir, cela proviendrait peut-être du .htaccess.
Essayer de regarder de ce côté :)

PEDR0
Auteur

Le .htcaccess qui est dans webroot ?
Je l'ai laissé en défault :

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

Par contre après avoir fais des recherches j'ai vu que certains avaient des modifications dessus. J'ai essayé quelques trucs mais sans succès.
J'ai installé cakePHP avec l'archivé téléchargé sur GitHub, pas avec composer, ca n'a pas de rapport ? Parce que certains parle d'un dossier APP dans lequel il y a un autre htcaccess, mais je n'ai pas ce dossier APP. CakePHP est directement dans le dossier de mon projet.

Bonsoir, essayer le système Cake\View\Helper\UrlHelper.