Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à vous tous,
Mon problème est super con. Je veux mettre des accents dans mes URLs. J'ai vu que ça marchais puisque Wikipédia (entre autres) utilisent des urls avec des accents. De plus certains noms de domaines peuvent être acheter avec des accents. Enfin bref, j'en veux moi aussi !
Et donc je fais mes urls, avec mes accents. Et là merde ça marche pas avec le Zend Framework.
Quand je vais sur mon url : mon-site.com/portfolio/réalisation-créations-sites-web, j'obtiens un jolie message d'erreurs... :-(
Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'PortfolioController::rc3a9alisationCrc3a9ationsSitesWebAction() does not exist and was not trapped in __call()
//... Je vous passe de la suite
Y'a t'il une option ou dois-je bidouiller le zf avant que ça ne soit gérer (puisque dans ce cas là, je vais aller gueuler sur les développeurs du zf, c'est inacceptable quoi ! ) ?
EDIT:
J'ai trouvé un technique bête de bourrin :
- je renomme mon action : rc3a9alisationCrc3a9ationsSitesWebAction()
- je renomme ma vue : r%C3%A9alisation-cr%C3%A9ations-sites-web.phtml
Mais bon faut avouer que c'est pas top, on sera tous d'accord.
Quelqu'un a mieux??
Dernière modification par Mr.MoOx (15-09-2007 13:20:57)
Hors ligne
Sur wikipedia c'est encodé non ?
Par exemple :
http://fr.wikipedia.org/wiki/Portail:%C3%89ducation
Je crois que c'est pas trop conseiller les accents ?
Quelqu'un en sait plus ?
Pour moi c'est un peu comme les noms de fichiers...car si l'encodage est pas partout pareil ça fou un peu le m***de :s.
Je peste quand je vois des noms de fichiers avec des espaces, des caractères spéciaux, etc... :s
Hors ligne
Ben perso quand je clique sur ton url, ça me redirige vers : http://fr.wikipedia.org/wiki/Portail:Éducation
Sur Opera et Firefox les liens de wikipédia avec accents ne sont pas encodé (on voit donc les accents).
IE6 fonctionne quand on tape les urls avec accents.
Après, c'est le serveur qui traite l'url demandé de manière encodé.
Dernière modification par Mr.MoOx (13-09-2007 18:20:08)
Hors ligne
php ne permet pas les accents (ci je me souvien bien)
le lien marche mais si tu regarde l'url afficher par le navigateur http://fr.wikipedia.org/wiki/Portail:%C3%89ducation et le mot apré le : son encodé puis transmit a la db donc c'est pas écrit en dur dans le php !!
puis google aime pas trop sa lol
Hors ligne
?! Quand PHP recoit %C3%89ducation, il comprend bien l'accent. Si en effet tu tape l'url que tu as mis toi, l'accent est encodé mais si tu regarde juste plus haut (la même url mais avec l'accent non encodé) le lien marche très bien.
Et d'où Google aime pas ça? C'est juste que quand tu fais une recherche, il zappe les accents mais il trouvera les résultats avec ou sans accent...
Hors ligne
regarde du coté de (raw)url(en|de)code ca devrait faire l'affaire.
après à voir si tu peux Z-F gère ca au niveau du dispatcher sinon tu passes à la fonction inverse ton module/controller/action.
perso, j'utilise ca au niveau des params transmis par URL pas au niveau des fichiers utilisés
Hors ligne
Le problème, c'est que je peux pas mettre ça ou je veux. J'compte pas aller bidouillé dans le code du zf lors du formatage de l'url pour la camelizé. J'aurais pensé que il y aurait une suppression des accents pendant ce processus. Mais je crois que je peux me brosser.
Peut être que je vais virer mes url à accents... mais ça me rend triste...
Hors ligne
Rien n'empeche avant le dispatcheur, de faire:
$controller = rawurldecode($this->_request->getParam('controller'));
$module = rawurldecode($this->_request->getParam('module'));
$action = rawurldecode($this->_request->getParam('action'));
et de passer $controller, $module et $action au dispatcher.
j'ai pas regarder en avant, mais je crois que tu peux faire des opérations avant le dispatch donc ca doit être jouable sans retoucher le Core
Regarde du coté des Plugins du front controller (dispatchLoopStart ou preDispatch)
enfin, je dis ca, je dis rien
Hors ligne
Bah le problème de faire ça, c'est qu'il me suffit pas de faire urldecode()... car je souhaiterais en fait filtrer les accents pour qu'ils disparaissent. Je pense pas que je peux appeler mon controller héhéController() (puis de toute façon j'ai pas envie c'est pas beau les variables avec accents)...
D'ailleurs, à propos des filtres, existe t-il déjà un filtre pour urlizé (si vous voyer ce que j'veux dire) dans le zf??
Car quand je genère des liens à partir de contenu (comme une news ou un article..) je génère un lien à partir du titre, et j'aimerais pouvoir avoir un formatage automatique.
Ex:
- titre de ma page : "Le Super titre qui déchire un peu"
-> après formatage : "le-super-titre-qui-dechire-un-peu" ou "super-titre-dechire" (ça ce serait le luxe)
Dernière modification par Mr.MoOx (14-09-2007 14:48:34)
Hors ligne
lire http://www.w3.org/Addressing/URL/url-spec.txt
attention tout de même tous les caractères ne sont pas autorisés
seuls les caractère 0-9 a-z A-Z et /- _ le sont tous les autres doivent être encodée sous la forme %0f ou le nombre est le codes hex du caractère dans la table ASCII donc beaucoup de caractères que nous avons dans l'ISO-latin-1 n'y sont pas
A+JYT
PS: pas d'accents c'est le mieux
Hors ligne
Bon au moins, c'est clair.
Par contre à propos d'un formateur d'url, je crois avoir trouvé un truc sympa sur le manuel php (urlize() ):
http://www.php.net/manual/fr/function.u … .php#61120
Bon alors jvais me débrouillé avec tout ça. Pas d'accents pour mes urls... tant pis...
Hors ligne
Je relance un peu le sujet. Depuis la fin de la discussion, quelque chose de bien a été intégré à ZF pour urlizer ?
Hors ligne
Php ne sait pas travailler avec l'utf-8. Lorsqu'il va travaillé sur la chaine "été" par exemple, les é perdent tout leur sens et le mot "été" devient "c3a9tc3a9" (qui n'a rien à voir avec la version avec entité HTML %E9t%E9)
Le serveur web Apache sait travaillé sur l'utf8 et donc, les chaines sont correctes lorqu'elles sont transmises au moteur php
A mon avis, la solution est de placé des utf8_decode la ou il faut
La norme d'adressage url n'autorise pas les caratères spéciaux, et le navigateur convertit automatiquement les caractères. (certains joue la transparence en laissant affiché les caractères décodé dans l'url, d'autres comme firefox non et affiche l'url encodé)
Dernière modification par nORKy (21-05-2008 10:05:48)
Hors ligne
Pages: 1