我对symfony比较陌生。我有一个bootstrap tables的视图页面。我也创建了crud控制器(src \ AppBundle \ Controller \ SiftscienceTrackerController.php),删除功能如下:
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 :(得分: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请求,以避免单独执行操作。
由于您的操作返回重定向,您只需将URL作为json返回到进行ajax调用的脚本并在javascript中进行重定向:
$.ajax({
url: $('#my-form').prop('action');
method: 'post',
data: $('#myForm').serializeArray()
success: function(response){
window.location(response.url);
}
});