Contrôleur doit retourner une réponse dans Symfony2
J'ai un appel ajax dans mon code. Ce que je veux atteindre avec l'appel fonctionne très bien. Je veux supprimer certains enregistrements de la base de données qui est réellement supprimé lorsque la méthode est appelée par ajax, mais comme dans symfony méthode doit retourner une réponse et c'est pourquoi, lorsque l'exécution de la méthode sa me donne l'erreur
Mon appel Ajax est
$.ajax({
type: "POST",
data: data,
url:"{{ path('v2_pm_patents_trashpatents') }}",
cache: false,
success: function(){
document.location.reload(true);
}
});
Et de la méthode qui est exécutée est
public function trashpatentAction(Request $request){
if ($request->isXmlHttpRequest()) {
$id = $request->get("pid");
$em = $this->getDoctrine()->getEntityManager();
$patent_group = $em->getRepository('MunichInnovationGroupPatentBundle:PmPatentgroups')->find($id);
if($patent_group){
$patentgroup_id = $patent_group->getId();
$em = $this->getDoctrine()->getEntityManager();
$patents = $em->getRepository('MunichInnovationGroupPatentBundle:SvPatents')
->findBy(array('patentgroup' => $patentgroup_id));
if($patents){
foreach($patents as $patent){
if($patent->getIs_deleted()==false){
$patent->setIs_deleted(true);
$em->flush();
}
}
}
$patent_group->setIs_deleted(true);
$em->flush();
}
else{
$em = $this->getDoctrine()->getEntityManager();
$patent = $em->getRepository('MunichInnovationGroupPatentBundle:SvPatents')->find($id);
if ($patent) {
$patent->setIs_deleted(1);
$em->flush();
}
}
return true;
}
}
Comment puis-je réussir à revenir à partir de cette méthode ?
Des idées? Grâce
Utilisez-vous des annotations?
oui j'ai utiliser les annotations
il ne sera en effet si nous utiliser les annotations?Parce que je utiliser YML, c'est facile et compréhensible.
Cette vérification n'est pas bon if ($request->isXmlHttpRequest()), supposons que vous souhaitez tester dans un autre onglet du navigateur pour vérifier que votre réponse est juste (en ignorant d'un problème de configuration option dans votre JS demande qui peut causer un mauvais comportement de réponse), vous ne pouvez pas... Chaque contrôleur doit toujours vous donner une réponse (200, 204, 400, etc...) de Votre contrôleur ignore la demande si ce n'est une requête AJAX...
oui j'ai utiliser les annotations
il ne sera en effet si nous utiliser les annotations?Parce que je utiliser YML, c'est facile et compréhensible.
Cette vérification n'est pas bon if ($request->isXmlHttpRequest()), supposons que vous souhaitez tester dans un autre onglet du navigateur pour vérifier que votre réponse est juste (en ignorant d'un problème de configuration option dans votre JS demande qui peut causer un mauvais comportement de réponse), vous ne pouvez pas... Chaque contrôleur doit toujours vous donner une réponse (200, 204, 400, etc...) de Votre contrôleur ignore la demande si ce n'est une requête AJAX...
OriginalL'auteur Zoha Ali Khan | 2012-06-25
Vous devez vous connecter pour publier un commentaire.
Remplacer
return true;
avecreturn new Response();
. Aussi n'oubliez pas d'écrireuse Symfony\Component\HttpFoundation\Response;
en haut.Il a travaillé parfait merci 🙂
Pour moi, il a travaillé parfait aussi. Merci!!!!!
OriginalL'auteur Anton Babenko
Vous pouvez également transmettre le code d'erreur 200 et le type de contenu comme ci-dessous.
return new Response('Sa venue à partir d'ici .', 200, array('Content-Type' => 'text/html'));
Ici est l'exemple complet du contrôleur
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
classe WelcomeController s'étend Contrôleur
{
public function indexAction()
{
return new Response('Sa venue à partir d'ici .', 200, array('Content-Type' => 'text/html'));
}
}
OriginalL'auteur Sam Kaz