Symfony2上的Ajax填充字段(类别填充子类别)

Symfony2上的Ajax填充字段(类别填充子类别),ajax,forms,symfony,Ajax,Forms,Symfony,我想在从选择框中选择类别时填充子类别。 我在互联网上关注了很多其他的东西,但是我觉得它不适合与Ajax一起使用,因此没有像我希望的那样使用动态表单 你知道我该怎么做吗 谢谢。您应该编写一个控制器,它将处理您的ajax请求,即使用json进行响应。然后,您应该在表单页面上编写一个JS代码,该代码将请求此控制器操作、处理响应并更新您的selectbox 也就是说,您有一个带有路由名称categories\u ajax\u path的控制器,它响应类似JSON的 [ {'label':'some

我想在从选择框中选择类别时填充子类别。 我在互联网上关注了很多其他的东西,但是我觉得它不适合与Ajax一起使用,因此没有像我希望的那样使用动态表单

你知道我该怎么做吗


谢谢。

您应该编写一个控制器,它将处理您的ajax请求,即使用json进行响应。然后,您应该在表单页面上编写一个JS代码,该代码将请求此控制器操作、处理响应并更新您的selectbox

也就是说,您有一个带有路由名称categories\u ajax\u path的控制器,它响应类似JSON的

[
  {'label':'some category 1','id':1,'group':'group 1'},
  {'label':'some category 2','id':2,'group':'group 2'},
  {'label':'some category 3','id':3,'group':'group 1'}
]
然后像这样向页面添加脚本

<script>
        $.getJSON('{{ path('categories_ajax_path') }}', function (data) {

            var opt_groups = {};

            $.each(data, function (i, value) {
                if (!(value.season in opt_groups))
                    opt_groups[value.group] = [];

                var opt = $('<option/>');
                opt.val(value.id);
                opt.text(value.title);

                opt_groups[value.group].push(opt);
            });

            for (var group in opt_groups) {
                if (!opt_groups.hasOwnProperty(group)) continue;

                var $opt_group = $("<optgroup/>", {'label': group});

                opt_groups[season].forEach (function ($item){
                    $opt_group.append($item);
                });

                $('#category_list').append($opt_group);
            }

        })
</script>
问题是,ajax填充的表单可能无法通过symfony内置验证,因为这不是symfony期望的选择,因此需要进行其他调整