J'utilise le routeur standard dans Zend Framework pour router la plupart des URL du système.Erreur urlencode() lors de l'utilisation de Zend_Controller_Router_Route et de l'assistant d'affichage d'URL
Pour une URL particulière, je veux y accéder via un alias de commande (en plus du contrôleur réel)
Par exemple.
URL réelle:
/mymodule/mycontroller/myaction/*
URL Alias:
/mymodule/mycontrolleralias/myaction/*
mycontrolleralias est pas un contrôleur réel, mais je veux toute demande à ce pour vous rendre à myController (paramètres de requête et tous)
Pour ce faire, j'ai essayé d'installer cette route:
$router->addRoute('controlleralias', new Zend_Controller_Router_Route(
':module/mycontrolleralias/:action/*',
array(
'module' => 'mymodule',
'controller' => 'mycontroller',
'action' => 'myaction'
)
));
Mais dans mon aide de vue si je tente de créer une URL:
$this->view->url(array('sort' => array('param1','param2')));
Je reçois une erreur:
urlencode() expects parameter 1 to be string, array given
#0 [internal function]: __lambda_func(Array)
#1 /library/Zend/Controller/Router/Route.php(398): urlencode(Array, false, true)
#2 /library/Zend/Controller/Router/Rewrite.php(441): Zend_Controller_Router_Route->assemble(Array, NULL, false, true)
#3 /library/Zend/View/Helper/Url.php(49): Zend_Controller_Router_Rewrite->assemble(Array)
Si je retire l'étoile (*) de mon itinéraire personnalisé, aucune erreur aura lieu - mais les urls générés à mon avis ne sont alors pas correct, car ils ne seront pas concordant avec les paramètres de la requête:
$router->addRoute('controlleralias', new Zend_Controller_Router_Route(
':module/mycontrolleralias/:action',
array(
'module' => 'mymodule',
'controller' => 'mycontroller',
'action' => 'myaction'
)
));
J'ai aussi trouvé que si Je ne suis pas passe dans un tableau pour un paramètre, il ne génère une erreur:
$this->view->url(array('sort' => 'param1'));
Malheureusement j'ai besoin de passer dans un tableau pour « sort » (comme indiqué ci-dessus)
Est-ce que quelqu'un sait ce que je fais mal? Peut-être y a-t-il un moyen plus facile d'y parvenir?
J'utilise Zend Framework 1.9.0
Merci, mais il donne toujours l'erreur. J'ai également trouvé si je ne passe pas un tableau de valeurs pour 'sort' cela fonctionnera aussi (voir la question mise à jour) – asgeo1
ouais désolé aussi faire un sens les params ne peuvent pas être des tableaux – RageZ
Le routeur standard supporte les tableaux pour les valeurs des paramètres, et va générer l'URL correcte. Mais si j'utilise une valeur séparée par virgule, il ne sera pas construire une URL correcte. C'est à dire. Je reçois/mymodule/mycontrolleralias/myaction/sort/param1% 2Cparam2 au lieu de/mymodule/mycontrolleralias/myaction/sort/param1/sort/param2 C'est juste Zend_Controller_Router_Route qui semble les traiter différemment et jette l'erreur quand j'essaye pour construire mon alias route :( – asgeo1