- 1
[Opened] Url et paramètres
Posted by Nesswaw on 06/03/2010 09:38
Bonjour,
Je sais pas si c'est un bug ou que c'est moi qui fais une erreur, mais voici mon problème:
Dans mon contrôleur "default", j'ai une action nommé "dl". Dans cette action je récupère un paramètre: "nom".
Dans mon fichier urls.xml j'ai cela:
<url pathinfo="/dl/:nom" module="app" action="default:dl" />
Quand mon paramètre est une simple string: test123, ça fonctionne Mais quand j'ai un paramètre avec slash, ça me renvoie une page 404 : fr/test123
Quelle est mon erreur ?
[Opened] Url et paramètres
Posted by laurentj on 06/03/2010 09:55
Bonjour,
un paramètre ne peux pas contenir un slash, puisque le slash est justement un séparateur de paramètre, ou plus exactement, un caractère réservé dans les urls.
[Opened] Re: Url et paramètres
Posted by Nesswaw on 06/03/2010 09:57
Bonjour,
Alors comment je peux faire pour passer un chemin en paramètre ?
Merci
[Opened] Url et paramètres
Posted by Nesswaw on 06/03/2010 10:10
J'ai trouvé une solution, en modifiant urls.xml
<url pathinfo="/dl" module="app" action="default:dl"> <code> <param name="dl" /></url> </code>
Après j'ai mes url sous forme :
dl?dl=fr/test123
Mais comment faire pour avoir des urls propore dans le ?dl= ???
Merci
[Opened] Re: Url et paramètres
Posted by ctacat on 06/03/2010 10:32
Je ne sais pas si ça peut marcher pour le slash, mais il y a une technique pour passer des espaces qui consiste à les transformer en un encodage toléré en URL, c'est-à-dire par '%20' (sans les quotes), 20 étant le codage ASCII de l'espace en hexadécimal.
2f étant le code ASCII hexadécimal du slash, j'imagine que si on l'utilise à la place des slashes, ça pourrait marcher... Il suffira à réception du paramètre de retransformer les %2f en / (facile avec str_replace). A essayer (je ne l'ai pas fait moi-même).
Une autre solution pourrait consister à encoder avec uuencode le paramètre, mais ça a comme inconvénients d'allonger d'environ 35 % en moyenne la chaîne de caractères et de rendre alors l'URL non compréhensible en soi, ça peut être génant en fonction du besoin. J'avais pensé au base64 initialement, mais le / est un des caractères utilisé par le base64, donc disqualifié pour cela.
[Opened] Url et paramètres
Posted by laurentj on 06/05/2010 14:18
Si tu veux avoir des chemins dans les paramètres, c'est donc à toi de parser ou générer les urls. Et donc en fait, tu dois développer un handler.
- 1