Utiliser les URL dans les catégories de paramètres de méthode d'action dans le Zend Framework
Dans Kohana/CodeIgniter, je peux avoir une URL de cette forme:
http://www.name.tld/controller_name/method_name/parameter_1/parameter_2/parameter_3 ...
Et ensuite de lire les paramètres de mon contrôleur comme suit:
class MyController
{
public function method_name($param_A, $param_B, $param_C ...)
{
//... code
}
}
Comment voulez-vous atteindre cet objectif dans le Zend Framework?
OriginalL'auteur Jeffrey04 | 2008-10-02
Vous devez vous connecter pour publier un commentaire.
Mise à jour (04/13/2016):
Le lien dans ma réponse ci-dessous déplacé et a été corrigé. Cependant, juste au cas où il disparaît à nouveau -- voici quelques alternatives qui fournissent des informations en profondeur sur cette technique, ainsi que de l'utilisation de l'original de l'article en tant que matériau de référence:
@Andrew Taylor's réponse est la bonne Zend Framework façon de gérer les paramètres d'URL. Cependant, si vous souhaitez avoir les paramètres de l'URL dans votre contrôleur de l'action (comme dans votre exemple) - découvrez les ce tutoriel sur Zend DevZone.
OriginalL'auteur leek
Prendre un coup d'oeil à la Zend_Controller_Router classes:
http://framework.zend.com/manual/en/zend.controller.router.html
Elles vous permettent de définir un Zend_Controller_Router_Route qui correspond à votre URL dans la façon dont vous avez besoin.
Un exemple de 4 statique params pour l'action " Index de l'Index du contrôleur est:
Il est ajouté à votre bootstrap après que vous avez défini votre contrôleur frontal.
Une fois dans votre action, vous pouvez alors utiliser:
À l'intérieur de votre méthode d'action pour l'accès aux valeurs.
Andrew
OriginalL'auteur Andrew Taylor
J'ai étendu
Zend_Controller_Action
avec ma classe de contrôleur et a apporté les modifications suivantes:Dans
dispatch($action)
méthode remplacé$this->$action();
avec
call_user_func_array(array($this,$action), $this->getUrlParametersByPosition());
Et ajout de la méthode
Maintenant pour une URL comme
/mycontroller/myaction/123/321
dans mon action, je vais obtenir tous les paramètres suivants contrôleur et l'action
Paramètres supplémentaires dans l'URL ne cause pas de toute erreur que vous pouvez envoyer plusieurs paramètres à la méthode définis. Vous pouvez obtenir tout cela par
func_get_args()
Et vous pouvez toujours utiliser
getParam()
de manière habituelle.Votre URL ne peut pas contenir le nom de l'action à l'aide d'un seul.
En fait mon URL ne contient pas les noms de paramètres. Seules leurs valeurs. (Exactement comme il était dans la question)
Et vous devez définir des itinéraires pour spécifier les paramètres de positions dans l'URL de suivre les notions de cadre et d'être en mesure de construire des Url à l'aide de Zend méthodes.
Mais si vous savez toujours la position de votre paramètre dans l'URL, vous pouvez facilement le faire comme ça.
Qui n'est pas aussi sophistiqué que l'utilisation de la réflexion méthodes, mais je suppose que fournit moins de frais généraux.
Méthode Dispatch ressemble maintenant à ceci:
OriginalL'auteur Victor
Pour une méthode plus simple qui permet de configurations plus complexes, essayez ce post. En résumé:
Créer
application/configs/routes.ini
Ajouter à
bootstrap.php
c'est souvent utile, j'ai tendance à trouver les contrôleurs et les itinéraires de groupe bien ensemble, c'est à dire /page/obtenir/1 et /utilisateur/andy/confirmer/e-mail-confirmation-jeton etc, bien que pour des applications plus importantes, il peut devenir difficile à gérer
OriginalL'auteur Andy
Posté ici http://cslai.coolsilon.com/2009/03/28/extending-zend-framework/
Ma solution actuelle est comme suit:
OriginalL'auteur Jeffrey04