2014-09-05 52 views
0

我已经用Symfony基于一个Doctrine实体构建了一个表单。该表单包含表单集合。假设外部表单用于创建任务。许多子任务可以添加到这个任务(表单集合部分)。通过ajax更新Symfony的表单集合原型

任务表单包含选择字段“类别”。 De子任务表单包含选择字段“子类别”。子类别字段的值取决于为类别字段选择的值。为了实现这一点,我想在选择主类别时通过AJAX更新表单原型。

JS的一部分可能不那么难,所以我确信我会管理它。但我不知道在服务器/ Symfony方面做什么来实现这一点。任何提示正确的方向将不胜感激。

+0

创建一个控制器将值列为'JSON',然后通过ajax加载值并使用'Form Transformer'使symfony接受附加值http://symfony.com/doc/current/cookbook/form/data_transformers.html – trrrrrrm 2014-09-05 08:27:01

+0

也这可能有助于https://www.adayinthelifeof.nl/2014/03/19/dynamic-form-modification-in-symfony2/ – trrrrrrm 2014-09-05 08:28:38

回答

0

您需要创建链接到一个控制器中的新功能(作用)的路线让它命名为“ajaxGetSubCategoriesAction()”

实现它让所有的子类,那么这样的返回他们:

//get the category id from ajax request 

    $categoryID = $request->request->get('category_id'); 

    //get all subcategories and return your result like this 

    return new Response(json_encode($result)); 

然后在呈现类别把数据字段的表单标签或类似

这个数据路径,你得到它的JS文件中div标签里面知道该功能的路径树枝您为ge创建t子类别。 $ posturl = $ formelement.data('path'); var categoryid = //从您的输入字段中获取它。 $就({ 类型: “POST”, URL:$ posturl, 异步:假, 数据类型: “JSON”, 数据:{ CATEGORY_ID:CATEGORYID }

}).done(function (response) { 
     inside response you will have all the subcategories returned from your ajaxGetSubCategories function 
     }