2017-04-04 53 views
0

enter image description here我对symfony比较陌生。我有一个查看页面bootstrap tables。我也有CRUD控制器(SRC \的appbundle \控制器\ SiftscienceTrackerController.php)创建和删除功能如下:在symfony 3中使用ajax从控制器调用删除函数

public function deleteAction(Request $request, SiftscienceTracker $siftscienceTracker) 
{ 
    $form = $this->createDeleteForm($siftscienceTracker); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->remove($siftscienceTracker); 
     $em->flush(); 
    } 

    return $this->redirectToRoute('admin_siftsciencetracker_index'); 
} 

我的问题是我是否可以从一个删除呼叫控制器的这种功能与Ajax调用表行中的按钮以及应如何写入ajax?如果不能,我可以在该控制器内创建另一个函数,并使用ajax调用该函数?

回答

0

下面是使用jQuery一个例子:

public function deleteAction(Request $request, SiftscienceTracker $siftscienceTracker) 
{ 
    $form = $this->createDeleteForm($siftscienceTracker); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->remove($siftscienceTracker); 
     $em->flush(); 
    } 

    $request = $this->getRequest(); 

    if($request->isXmlHttpRequest() || $request->get('_xml_http_request')){ 
     return new JsonResponse("{url: $this->generateUrl('admin_siftsciencetracker_index')}", 200); 
    } 

    return $this->redirectToRoute('admin_siftsciencetracker_index'); 
} 

正如你可以看到我检查该请求是否是要避免使一个单独的动作的AJAX请求。

因为你的操作会返回一个重定向你可以返回网址为JSON到发出Ajax调用的脚本,使重定向在javascript:

$.ajax({ 
    url: $('#my-form').prop('action'); 
    method: 'post', 
    data: $('#myForm').serializeArray() 
    success: function(response){ 
    window.location(response.url); 
    } 
}); 
+0

谢谢我看到了逻辑,但我米,网址有点糊涂了:$('#my-form')。prop('action');.我没有在视图中只有一个表格的表格。用图像编辑的问题 –

相关问题