2009-12-17 6 views
2

Voici mon code:Autoriser contenant des barres obliques dans param Zend_Controller_Router_Route_Regex

$route = new Zend_Controller_Router_Route_Regex('download/([^/]+)(/([^/]+))?/(\d+)/(\d+)', 
              array('controller' => 'download', 
                'action'  => 'load'), 
              array(1 => 'name', 3 => 'or_name', 
                4 => 'p_id', 5 => 'c_id')); 
$router->addRoute('download', $route); 

La première param devrait être autorisé à contenir des barres obliques, mais sous forme urlencoded. Mais malheureusement, cela ne fonctionne pas avec mon code actuel, il me donne une erreur 404 à la place. Donc, est-il possible d'empêcher l'urodécodage de paramètres de route?

Répondre

1

Dans Zend_Controller_Router_Route_Regex::match, il appelle urlencode sur le chemin tout de suite:

$path = trim(urldecode($path), '/'); 


Pour vaincre que, essayez urlencoding votre paramètre name deux fois:

$url = 'download/'.urlencode(urlencode('hey/there')); 
+0

C'est une solution bien, mais je d plutôt que ce ne soit pas un hack – EarthMind

+1

vous pouvez écrire un routeur personnalisé – SMka

Questions connexes