Je suis très nouveau sur symfony. Dans d'autres langues comme Java et d'autres, je peux utiliserrequest.getParameter('parmeter name')
pour obtenir la valeur.
Y a-t-il quelque chose de similaire que nous pouvons faire avec symfony2.
J'ai vu quelques exemples mais aucun ne fonctionne pour moi. Supposons que j'ai un champ de formulaire avec le nom username . Dans l'action de formulaire, j'ai essayé d'utiliser quelque chose comme ceci:
$request = $this->getRequest();
$username= $request->request->get('username');
J'ai aussi essayé
$username = $request->getParameter('username');
et
$username=$request->request->getParameter('username');
Mais aucune des options ne fonctionne, mais ce qui suit a bien fonctionné:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Où est-ce que je me trompe dans l'utilisation de la getParameter()
méthode. Toute aide serait appréciée.
$request->request-get()
devrait l'être$request->request->get()
. Serait-ce possible?get()
s'agit de la bonne méthode et (b) activé les notifications PHP afin de voir s'il y a des problèmes? (c) Symfony 2 a-t-il une barre d'outils de débogage comme symfony 1, donc vous pouvez voir si vous avez fait des erreurs?Réponses:
La dénomination n'est pas du tout intuitive:
la source
$_GET
les données sont des données de la chaîne de requête (aucuneGET
demande nécessaire du tout) et les$_POST
données sont des données du corps de la demande (ne doit pas nécessairement être unePOST
demande non plus, pourrait l'êtrePUT
).$request->get
et$request->post
serait plus simple.Je le fais encore plus simple:
Une autre option consiste à introduire vos paramètres dans votre définition de fonction d'action:
qui, puis suppose que vous avez défini {foo} et {bar} dans le cadre de votre modèle d'URL dans votre fichier routing.yml:
la source
foo
paramètre à la fois dans la chaîne de requête et dans le corps POST, lequel sera retourné$request->get('foo')
?$request->get('foo');
œuvres correctes pour TOUS les sacs (la commande est: CHEMIN, OBTENIR, POSTER). Néanmoins,$request->request->get('foo');
ne fonctionne que pour le sac POST. Enfin, le premier ($request->get()
) n'est pas recommandé si nous savons où se trouvent les données (GET / POST).Vous pouvez utiliser le code suivant pour obtenir les valeurs de votre champ de formulaire
Ou Vous pouvez également obtenir toutes les valeurs du formulaire sous forme de tableau à l'aide de
la source
essayer
inspecter le nom d'attribut de votre champ de formulaire
la source
À l'intérieur d'un contrôleur:
la source
$this->getRequest()
est déconseillé, en faveur de l'injection de la demande dans l'action du contrôleur, par exemple:public function showAction(Request $request, $id);
Vos options:
$request->request->get('param')
($_POST['param']
) ou$request->query->get('param')
($_GET['param']
)En savoir plus
OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.htmlla source
Comme la
$this->getRequest()
méthode est maintenant obsolète, vous devez injecter unRequest
objet dans votre action de contrôleur comme ceci:après cela, vous pouvez utiliser l'une des options suivantes.
Si vous souhaitez extraire les données POST de la demande, utilisez ce qui suit:
mais si vous voulez récupérer les données GET de la demande, utilisez ceci:
la source
Vous pouvez le faire:
Parfois, lorsque les attributs sont protégés, vous ne pouvez pas avoir accès pour obtenir la valeur de la méthode d'accès courante:
(PUBLIER)
(AVOIR)
(GÉNÉRIQUE)
la source
$clientName = $request->query->get('clientName','any');
La plupart des cas, comme l'obtention de paramètres de chaîne ou de formulaire de requête, sont traités dans les réponses ci-dessus.
Lorsque vous travaillez avec des données brutes, comme une chaîne JSON brute dans le corps que vous souhaitez donner comme argument
json_decode()
, la méthodeRequest::getContent()
peut être utilisée.Des informations utiles supplémentaires sur les requêtes HTTP dans Symfony peuvent être trouvées dans la documentation du paquet HttpFoundation .
la source
la source
Request
paramètre? (par exemple dans les fonctions privées de la classe de contrôleur par exemple)Merci, vous pouvez également utiliser le code ci-dessus
la source
Si vous avez besoin d'obtenir la valeur d'une sélection, vous pouvez utiliser:
la source
Essayez ça, ça marche
Cordialement
la source
la source
Pour les utilisateurs de symfony 4:
la source
# www.example / register / admin
la source