2017-04-04 56 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');.我沒有在視圖中只有一個表格的表格。用圖像編輯的問題 –