Je suis très nouveau à Symfony. Dans d'autres langages comme Java et d'autres, je peux utiliser request.getParameter('parmeter name')
pour obtenir la valeur.
Y a-t-il quelque chose de similaire que nous puissions faire avec symfony2.
J'ai vu des exemples, mais aucun ne fonctionne pour moi. Supposons que j'ai un champ de formulaire avec le nom nom d'utilisateur. Dans l'action du 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. Cependant, la suite a bien fonctionné:
foreach($request->request->all() as $req){
print_r($req['username']);
}
Où est-ce que je me trompe en utilisant la méthode getParameter()
. Toute aide serait appréciée.
La dénomination n'est pas si intuitive que ça:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
// $_GET parameters
$request->query->get('name');
// $_POST parameters
$request->request->get('name');
Je le fais encore plus simple:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
$foo = $request->get('foo');
$bar = $request->get('bar');
}
Une autre option consiste à introduire vos paramètres dans la définition de votre fonction d'action:
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request, $foo, $bar)
{
echo $foo;
echo $bar;
}
qui suppose que vous avez défini {foo} et {bar} dans le modèle d’URL de votre fichier routing.yml:
acme_myurl:
pattern: /acme/news/{foo}/{bar}
defaults: { _controller: AcmeBundle:Default:getnews }
Vous pouvez utiliser le code suivant pour obtenir les valeurs de vos champs de formulaire
use Symfony\Component\HttpFoundation\Request;
public function updateAction(Request $request)
{
// retrieve GET and POST variables respectively
$request->query->get('foo');
$request->request->get('bar', 'default value if bar does not exist');
}
Ou vous pouvez également obtenir toutes les valeurs de formulaire sous forme de tableau en utilisant
$request->request->all()
essayer
$request->request->get('acme_demobundle_usertype')['username']
inspecter le nom d'attribut de votre champ de formule
À l'intérieur d'un contrôleur:
$request = $this->getRequest();
$username = $request->get('username');
Vos options:
$request->request->get('param')
($_POST['param']
) ou$request->query->get('param')
($_GET['param']
)<?php
/**
* @Route("/customers", name="customers")
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
$optionsResolver = new OptionsResolver();
$optionsResolver->setDefaults([
'email' => '',
'phone' => '',
]);
$filter = $optionsResolver->resolve($request->query->all());
/** @var CustomerRepository $customerRepository */
$customerRepository = $this->getDoctrine()->getRepository('AppBundle:Customer');
/** @var Customer[] $customers */
$customers = $customerRepository->findFilteredCustomers($filter);
return $this->render(':customers:index.html.twig', [
'customers' => $customers,
'filter' => $filter,
]);
}
En savoir plus sur OptionsResolver
- http://symfony.com/doc/current/components/options_resolver.html
Comme maintenant _ la méthode $this->getRequest()
est obsolète, vous devez injecter un objet Request
dans l'action de votre contrôleur comme ceci:
public function someAction(Request $request)
après cela, vous pouvez utiliser l'un des éléments suivants.
Si vous voulez extraire POST les données de la requête, utilisez ce qui suit:
$request->request->get('var_name');
mais si vous voulez récupérer des données GET à partir d'une requête, utilisez ceci:
$request->query->get('var_name');
Vous pouvez le faire ceci:
$clientName = $request->request->get('appbundle_client')['clientName'];
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:
(POSTER)
$clientName = $request->request->get('clientName');
(OBTENIR)
$clientName = $request->query->get('clientName');
(GÉNÉRIQUE)
$clientName = $request->get('clientName');
La plupart des cas tels que l'obtention d'une chaîne de requête ou de paramètres de formulaire 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 utiliser comme argument pour json_decode()
, la méthode Request::getContent()
peut être utilisée.
$content = $request->getContent();
Des informations utiles supplémentaires sur les requêtes HTTP dans Symfony sont disponibles dans la documentation du package HttpFoundation .
use Symfony\Component\HttpFoundation\Request;
public function indexAction(Request $request, $id) {
$post = $request->request->all();
$request->request->get('username');
}
Merci, vous pouvez également utiliser le code ci-dessus
$request = Request::createFromGlobals();
$getParameter = $request->get('getParameter');
Essayez ça, ça marche
$this->request = $this->container->get('request_stack')->getCurrentRequest();
Cordialement
public function indexAction(Request $request)
{
$data = $request->get('corresponding_arg');
// this also works
$data1 = $request->query->get('corresponding_arg1');
}
Pour les utilisateurs de symfony 4:
$query = $request->query->get('query');
Si vous avez besoin d'obtenir la valeur d'un select, vous pouvez utiliser:
$form->get('nameSelect')->getClientData();