2012-06-13 40 views
1

我正在開發一個web應用程序。我有應該從網頁創建和編輯的實體(很經典,不是)。Symfony2:在jQuery中使用生成的表單

所以我想使用Symfony提供的表單生成(使用Type和Handler),但我不是簡單地用標準方式打印它們。我想從jQuery中調用這些表單,以便我可以在jQuery插件中使用驗證等,例如jEditable

因此,我想最好的方法是將我的表單作爲json發送給jquery函數,它將它放入我的HTML元素中。

我所做的:

的jQuery:

$.get("getorganisationform/"+curOId, function(data){ 
    if(data.responseCode==200){ 
     $("#innerModal").append(data.form); 
    } 
}); 

控制器:

$form = $this->createForm(new OrganisationType, $organisation); 

    $formHandler = new OrganisationHandler($form, $this->get('request'), $this->getDoctrine()->getEntityManager()); 

    if($formHandler->process()) 
    { 
     return $this->redirect($this->generateUrl('adminpanel')); 
    } 

    return new Response(json_encode($form), 200); 

的json_encode()實際上不發送任何東西,如$形式是一個對象。現在我有幾個問題:

  • 有沒有辦法獲取表單的html元素?
  • 那麼使用json有必要嗎?
  • 有沒有更好的方式來重用jQuery中的表單生成? (我正在考慮這裏的jeditable)

在此先感謝!

回答

0

經過一番更多的研究,我決定渲染一個樹枝,餵我的形式。這樣我就可以得到響應中發送的html內容。通常情況下:

return $this->render('MyBundle:Admin:form.html.twig', array(
     'form' => $form->createView(), 
    )); 
0

你可以試試這個獲取html表單內容。

return new Response(
    json_encode(
     array(
      'form' => $form->createView(), 
      'responseCode' => 200 
      ) 
     ), 
    200 
); 
+0

只要我使用json編碼,響應就是空的。爲了準確,響應是「{」form「:{},」responseCode「:200}' –

相關問題