2010-02-05 8 views
1

Bonjour à tousComment obtenir des nombres impairs de paramètres dans Zend Framework?

Utilisation de l'objet request, je ne peux pas obtenir une valeur unique comme dans cet URI:

http://mydomain.com/controller/action/value1 

L'utilisation $request->getParams() ne retourne pas la value1.

Sortie:

array([controller] => 'controller', [action] => 'action') 

La clé est manquante.

Le problème en lui-même est assez simple et je pourrais analyser l'URI moi-même, mais en fait je veux que ZF le fasse (pas vrai?). Je n'ai pas trouvé d'indice en utilisant google ou SO.

Comment puis-je obtenir une clé sans valeur?

+0

Donc le routage est l'astuce;) Merci à tous, j'ai coché la réponse la plus compréhensible. – PvB

Répondre

5

Par défaut, Zend Framework s'attend à ce que les paramètres dans l'URL soient sous la forme /key/value. Essayez ceci:

http://mydomain.com/controller/action/key1/value1

print_r($request->getParams()); 

Le résultat est:

Array 
(
    [controller] => controller 
    [action] => action 
    [key1] => value1 
) 

Edit: comme d'autres ont mentionné, si vous voulez coller avec http://mydomain.com/controller/action/value1 vous devriez jeter un oeil à Zend_Controller_Router.

0

Essayez de modifier vos itinéraires en ajoutant le champ nécessaire.

0

Bien quel est le chemin vers lequel il ressemble à la carte? Si c'est la route par défaut alors cela devrait être attendu car il repose sur la règle d'analyse syntaxique key/value. Si elle ne suit pas cette règle simple, vous devez créer une nouvelle route pour correspondre à la règle pour cet URI particulier.

En général, si vous pensez que vous avez une clé qui n'aura pas de valeur, vous devez fournir une valeur par défaut pour cette valeur dans la route.

0

Définir votre itinéraire dans les routes.fichier ini comme suit (si valeur1 est une valeur décimale, sinon modifier l'expression régulière pour répondre à vos besoins):

routes.your_route.route = "controller/action/:value1" 
routes.your_route.defaults.controller = "controller" 
routes.your_route.defaults.action = "action" 
routes.your_route.reqs.value1 = "\d+" 

Ensuite, vous pouvez accéder à la valeur de votre action à l'aide getParam (s).

Questions connexes