Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je découvre le Zend Framework depuis maintenant quelques jours, mais je me perds encore un peu dans les histoires de routage, de réécriture d'URL et ces autres joyeusetés. Je vais essayer d'expliquer mon problème le plus clairement possible, n'hésitez pas à poser des questions si vous ne comprenez rien ^^
Donc, je travaille en local avec un virtual host qui fait que mon site est (virtuellement) à la racine (en gros, http://monsite.localhost/). Dans cette configuration, tout fonctionne parfaitement. Mes controllers, mes modules, etc.
Quand je passe online, mon site ne se trouve plus à la racine mais dans un sous-dossier (http://serveur.com/monsite/). J'accède bien à l'index quand je tape l'adresse directement, mais dès que je veux aller à une autre page, mes liens / formulaires de connexion / autre formulaires / etc. ne contiennent pas le /monsite/ et donc... Rien ne fonctionne (jolie erreur 404).
J'ai théoriquement un helper qui avec $this->baseUrl() fonctionne parfaitement (il renvoie bien /monsite/), mais je ne m'imagine pas changer tous mes liens / formulaires pour le rajouter. Quelle serait donc la meilleure façon d'éviter de changer tous mes liens ? Est-ce que ce problème est un problème dans mon routage, dans mon controller ? Est-ce que je dois faire un setBaseUrl sur mon FrontController ?
Une recherche sur le forum m'a conduit vers http://www.z-f.fr/forum/viewtopic.php?id=728 où l'on parle de la balise html <base>, solution qui fonctionne certainement (mais que je n'ai pas encore essayée), mais... J'aimerai parfaitement comprendre la logique de la chose.
Bref, je suis un peu perdu, et votre aide me sera très précieuse !
Merci par avance !
Dernière modification par upsilon (09-07-2008 17:54:28)
Hors ligne
Dans on cas y'a 2 solutions :
- soit t'as générer tous les liens de ton site avec le view helper url() donc normalement, il suffit de faire un
Zend_Controller_Front::getInstance()->setBaseUrl('/monsite/'); et tous les liens auront la base.
- soit tu as écrit tes liens à la main et donc je te conseille fortement de placer la balise html <base> qui sera de loin la plus simple des solutions. Cette balise sert en fait à préfixer tous les liens internes de la page. Dans ton cas ça peut être très pratique.
Hors ligne
Je me suis finalement servi de la balise HTML <base> manquant de temps pour voir comment générer mes liens avec url() (et pour m'intéresser à une meilleur façon de faire mon routage, le copier/coller c'est bof...).
Enfin bon, j'ai du un peu bidouiller pour que les liens fonctionnent bien (je reste à disposition pour les explications), mais maintenant ça marche !
En tout cas, merci énormément !
Hors ligne
Tu n'as pas une fonction remplacer dans ton editeur favoris ??
Hors ligne
nORKy a écrit:
Tu n'as pas une fonction remplacer dans ton editeur favoris ??
Euh, si, bien sûr, mais pourquoi cette question ? Pour remplacer mes liens ? Parce que d'après ce que j'ai compris, le helper url() se sert de l'objet de routage pour créer les url, et je n'ai pas codé moi-même l'objet de routage (copié/collé d'un tuto), et je n'ai pas encore le temps de me plonger dans la chose pour être sûr que mes liens seront bien générés.
Mais dans tous les cas, la solution est temporaire... Je découvre
Merci pour vos réponses en tout cas !
Hors ligne