Symfony 2.2
cette solution est obsolète depuis 2.3 et sera supprimée en 3.0, voir documentation
$form->getData();
vous donne un tableau pour les paramètres du formulaire
à partir de la page 162 du livre symfony2 (Chapitre 12: Formulaires)
[...] parfois, vous voudrez peut-être simplement utiliser un formulaire sans classe et récupérer un tableau des données soumises. C'est en fait très simple:
public function contactAction(Request $request) {
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('message', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
}
// ... render the form
}
Vous pouvez également accéder aux valeurs POST (dans ce cas "nom") directement via l'objet de requête, comme ceci:
$this->get('request')->request->get('name');
Sachez cependant que dans la plupart des cas, l'utilisation de la méthode getData () est un meilleur choix, car elle renvoie les données (généralement un objet) après avoir été transformées par le framework de formulaire.
Lorsque vous souhaitez accéder au jeton de formulaire, vous devez utiliser la réponse de Problematic
$postData = $request->request->get('contact');
car le getData()
supprime l'élément du tableau
Symfony 2.3
depuis 2.3, vous devriez utiliser à la handleRequest
place de bindRequest
:
$form->handleRequest($request);
voir la documentation
Les valeurs de publication du formulaire sont stockées sous le nom du formulaire dans la demande. Par exemple, si vous avez remplacé la
getName()
méthode de ContactType () pour renvoyer "contact", procédez comme suit:Si vous ne parvenez toujours pas, essayez de faire un
var_dump()
sur$request->request->all()
pour voir toutes les valeurs de poste.la source
getName()
, alors il est logique de ne pas coder en dur les noms:$request->request->get($form->getName());
ce qui a fonctionné pour moi était d'utiliser ceci:
la source
Il y a une astuce avec la
ParameterBag::get()
méthode. Vous pouvez définir le$deep
paramètre àtrue
et accéder à la valeur imbriquée profonde requise sans variable supplémentaire:Vous avez également la possibilité de définir une valeur par défaut (2ème paramètre de la
get()
méthode), cela peut éviter lesisset($form['some']['deep']['data'])
appels redondants .la source
Les données de terrain sont accessibles dans un contrôleur avec: Listing 12-34
De plus, les données d'un champ non mappé peuvent également être modifiées directement: Listing 12-35
page 164 livre symfony2 (généré le 9 octobre 2013)
la source
J'accède au paramètre ticketNumber pour ma demande de publication en plusieurs parties de la manière suivante.
la source
Je pense que pour obtenir les données de la demande, liées et validées par l'objet de formulaire, vous devez utiliser:
$form->getClientData();
la source
Symfony doc pour obtenir des données de demande
$ content = $ request-> getContent ();
la source
Si vous êtes novice, bienvenue sur Symfony2, un projet open-source donc si vous voulez en apprendre beaucoup, vous pouvez ouvrir le source!
Depuis "Form.php":
getData () getNormData () getViewData ()
Vous pouvez trouver plus de détails dans ce fichier.
la source
$form->getData();
Je sais que les gens sont paresseux et veulent une solution sans réfléchir un peu ;-(