Comment accéder à la route, post, get, etc. paramètres dans Zend Framework 2
Comment puis-je obtenir divers paramètres liés à la demande de page dans zf2? Comme post/get paramètres, la route accessible, les en-têtes envoyés et les fichiers téléchargés.
- C'est une question. Génial.
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de le faire serait d'utiliser le Plugin Params, introduit dans la beta5. Il a une utilité des méthodes pour faciliter l'accès aux différents types de paramètres. Comme toujours, la lecture les tests peut s'avérer des plus utiles pour comprendre comment quelque chose est censé être utilisé.
Obtenir une seule valeur
Pour obtenir la valeur d'un paramètre nommé dans un contrôleur, vous devez sélectionner la méthode appropriée pour le type de paramètre que vous recherchez et de passer le nom.
Exemples:
Valeurs par défaut
Toutes ces méthodes ont également en charge les valeurs par défaut qui sera restituée si aucun paramètre dont le nom est trouvé.
Exemple:
Lors de la visite de http://example.com/?orderby=birthdate,
$orderBy aura la valeur date de naissance.
Lors de la visite de http://example.com/,
$orderBy aura la par défaut valeur nom.
Obtenir tous les paramètres
Pour obtenir tous les paramètres d'un type, il suffit de ne pas passer de dans quelque chose et les Paramètres du plugin retourne un tableau de valeurs avec leurs noms en tant que touches.
Exemple:
Lors de la visite de http://example.com/?orderby=birthdate&filter=hasphone $allGetValues sera un tableau comme
Pas à l'aide de plugin Params
Si vous cochez la le code source pour les Paramètres du plugin, vous verrez que c'est juste un wrapper mince dans d'autres contrôleurs, afin de permettre plus de cohérence paramètre de récupération. Si vous voulez/besoin d'accéder directement à eux, vous pouvez voir dans le code source de la façon dont c'est fait.
Exemple:
REMARQUE: Vous pourriez avoir utilisé les superglobales $_GET, $_POST, etc., mais qui est découragé.
$this->params('key', 'default')
La easisest façon à obtenir une posté chaîne json, par exemple, est de lire le contenu de 'php://input' et puis le décoder. J'ai eu par exemple un simple Zend route:
et je voulais publier des données à l'aide Angulaire de $http.post. Le post était très bien, mais la restauration de la méthode dans Zend
ne pas obtenir quelque chose dans ce cas. Donc ma solution a été, après avoir essayé toutes sortes de méthodes comme les $_POST et les autres méthodes décrites ci-dessus, à lire à partir de 'php://':
J'ai obtenu mon tableau json à la fin.
Espérons que cette aide.
$content = $this->getRequest()->getContent()
?name=mike
?Toutes les méthodes ci-dessus fonctionne correctement si votre contenu est de type "application/-www-form-urlencoded".
Mais si votre contenu est de type "application/json", alors vous devrez effectuer les opérations suivantes:
$params = json_decode(file_get_contents('php://input'), true);
print_r($params);
Raison : Voir #7 dans https://www.toptal.com/php/10-most-common-mistakes-php-programmers-make
Si Vous n'avez pas accès au plugin par exemple à l'extérieur de contrôleur, Vous pouvez obtenir les paramètres de servicelocator comme ce