Symfony2:在jquery中使用生成的表单

时间:2012-06-13 12:56:46

标签: php jquery symfony

我正在开发一个Web应用程序。我有应该从网上创建和编辑的实体(非常经典,不是)。

所以我想使用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()实际上不发送任何内容,因为$ form是一个对象。现在我有几个问题:

  • 有没有办法获取表单的html元素?
  • 是否有必要使用json?
  • 有没有更好的方法在jquery中重用表单生成? (我在考虑在这里讨价还价)

提前致谢!

2 个答案:

答案 0 :(得分:0)

你可以尝试这个来获取html表单内容。

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

答案 1 :(得分:0)

经过一些更多的研究后,我决定渲染一根喂养我的表格的树枝。这样我就可以获得响应中发送的html内容。典型地:

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