【问题标题】:Call delete function from controller with ajax in symfony 3在 symfony 3 中使用 ajax 从控制器调用删除函数
【发布时间】:2023-03-03 03:23:01
【问题描述】:

我对 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 调用那个函数吗?

【问题讨论】:

    标签: ajax symfony bootstrap-table


    【解决方案1】:

    这里是一个使用 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);
       }
    });
    

    【讨论】:

    • 谢谢,我看到了逻辑,但我对 url 有点困惑:$('#my-form').prop('action');。我在视图中没有表格,只有一个有一行的表格。用图片编辑的问题
    猜你喜欢
    • 2021-10-05
    • 2022-11-02
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2014-04-05
    • 2018-01-23
    相关资源
    最近更新 更多