J'utilise jQuery
pour modifier mon formulaire intégré Symfony
.
J'affiche le formulaire dans une jQuery
boîte de dialogue, puis je le soumets.
Les données entrent correctement dans la base de données.
Mais je ne sais pas si je dois envoyer un certain JSON
retour à jQuery
. En fait, je suis un peu confus avec les JSON
choses.
Supposons que j'ai ajouté une ligne dans ma table avec `` jQuery et que lorsque je soumets le formulaire, une fois les données soumises, je souhaite renvoyer ces données de ligne afin que je puisse ajouter dynamiquement la ligne de table pour afficher les données ajoutées.
Je ne sais pas comment récupérer ces données.
Ceci est mon code actuel:
$editForm = $this->createForm(new StepsType(), $entity);
$request = $this->getRequest();
$editForm->bindRequest($request);
if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();
return $this->render('::success.html.twig');
}
Ceci est juste le modèle avec le message de réussite.
la source
Symfony 2.1 a une classe JsonResponse .
Le tableau transmis sera encodé en JSON, le code d'état par défaut sera 200 et le type de contenu sera défini sur application / json.
Il existe également une
setCallback
fonction pratique pour JSONP.la source
Depuis Symfony 3.1, vous pouvez utiliser JSON Helper http://symfony.com/doc/current/book/controller.html#json-helper
la source
Pour compléter la réponse @thecatontheflat, je recommanderais également d'envelopper votre action dans un
try … catch
bloc. Cela empêchera votre point de terminaison JSON de se rompre sur les exceptions. Voici le squelette que j'utilise:De cette façon, votre point de terminaison se comportera de manière cohérente même en cas d'erreurs et vous pourrez les traiter directement du côté client.
la source
Si vos données sont déjà sérialisées:
a) envoyer une réponse JSON
b) envoyer une réponse JSONP (avec rappel)
Si vos données doivent être sérialisées:
c) envoyer une réponse JSON
d) envoyer une réponse JSONP (avec rappel)
e) utiliser des groupes dans Symfony 3.xx
Créez des groupes dans vos entités
Normaliser votre objet Doctrine dans la logique de votre application
la source