2014-09-05 126 views
0

我想通過ajax調用控制器來將實體更新到db中。但是,我只知道如何使用Symfony的形式更新實體。目前我有一個表單將被jQuery方法附加並通過ajax提交,但是我在控制器中做了什麼。Symfony2,Doctrine2,更新實體

阿賈克斯:

$("#editctrno").on("submit", function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     url: "{{ path('containers_edit') }}", 
     type: "POST", 
     data: {'ctrno' : $("#ctrno").val(), 
       'refno' : $("#refno").val()}, 
     dataType: "json", 
     success: function(data) { 
      console.log(data[0].ctrno); 
     } 
    }); 
}); 

現在我控制器上:

/** 
* @Route("/edit/", name="containers_edit", defaults={"_format" = "json"}) 
*/ 
public function editCtr(Request $request) { 
    $ctrno = $request->get('ctrno'); 
    $refno = $request->get('refno'); 

    $em = $this->getDoctrine()->getManager()->getRepository('Bundle:Ref'); 

    // I want to access in the database to find the 'refno' and update the 'ctrno', 
    // something like: 
    // $entity = $em->findRefno($refno); 
    // $entity->setCtrno($ctrno); 
    // $em->flush(); 

    return new Response(json_encode($entity)); 
} 

這有什麼建議?

+0

喜歡有正常形式,只是不要忘記在jQuery中序列化數據。 – 2014-09-05 17:53:56

+1

看看這裏 - http://codemonkeys.be/2013/01/ajaxify-your-symfony2-forms-with-jquery/ – dmnptr 2014-09-05 17:59:02

+0

什麼不工作? – Toskan 2014-09-05 18:05:39

回答

0

查看評論中的鏈接dmnptr它擁有您需要的一切。

只是有一點增加,在你的代碼,你需要將方法名從

editCtr()更改爲editCtrAction()

在控制器類中的所有方法都是「動作」。希望這可以幫助。

相關問題