J'essaie d'insérer/mettre à jour un enregistrement dans AJAX en utilisant Symfony2. Je soumets mon formulaire en utilisant JQuery. Voici mon contrôleur:Insérer et mettre à jour l'enregistrement avec Ajax et Symfony2
public function myEntitysAction(){
$em = $this->getDoctrine()->getEntityManager();
$request = $this->getRequest();
$AJAXresponse = array();
$myEntity = new myEntity();
$form = $this->createForm(new myEntityType(), $myEntity);
if ($request->getMethod() == 'POST') {
$form->bindRequest($this->getRequest());
if ($form->isValid()) {
$AJAXResponse['code'] = 'OK';
$em->persist($myEntity);
$em->flush();
}else{
$AJAXResponse['code'] = 'ERR';
}
if ($request->isXmlHttpRequest() == true) {
$response = new Response(json_encode($AJAXResponse));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}
}
Le problème est que ce code insère bien, mais je ne peux pas mettre à jour les données; il continue à insérer. Dois-je mettre en œuvre un moyen de mettre à jour en renvoyant le nouvel identifiant à la réponse ou y a-t-il un moyen avec Symfony de le gérer automatiquement?
Merci beaucoup pour votre aide.
C'est à cause de la ligne '$ MyEntity = new MyEntity()' si vous voulez faire une mise à jour que vous avez à charger votre entité de votre base de données. Mais vous voulez créer une entité et ensuite être en mesure de modifier cette entité sans recharger la page qu'il est? – Snroki
oui c'est tout. Pas exactement sûr de savoir comment faire cela en plus d'envoyer le nouvel identifiant au client et de le renvoyer dans la prochaine requête ajax pour la mise à jour. – Ben
Je ne suis pas sûr que vous pouvez le faire sans recharger la page. Peut-être que vous pouvez essayer d'ajouter un champ caché et pousser l'identifiant à l'intérieur quand il s'agit d'une mise à jour et simplement ajouter une règle dans la validation de votre formulaire. – Snroki