Symfony2与多个依赖字段形成

时间:2015-08-18 02:30:54

标签: symfony symfony-forms

我正在创建一个具有以下格式的注册。

如果国家/地区发生变化,那么我需要相应地更改子字段。

1-国家     状态       城市         郊区

在我的COMPANY BRANCH实体中,我将郊区密钥保存为一对多。公司分公司位于郊区。

如果我改变公司组,那么它应该改变孩子的。

2-公司集团      公司

在我的COMPANY BRANCH实体中,我将公司密钥保存为外键。一对多的关系。公司有多个分公司,一个分公司只属于一家公司。

3-分支地址(文本)

4-其他一些文本字段。

问题:如何实现嵌入式表单,集合或简单的Ajax调用。

我已经尝试了Dependent forms教程,但我有两个依赖项。国家和公司集团。对我来说很难在我的项目中映射这些东西。如果有人提供详细说明如何操作。那太好了。谢谢,

1 个答案:

答案 0 :(得分:0)

在我看来,实现这一目标的最佳方法是将子字段设置为“禁用”,为每个字段设置一个空值,并将jQuery监听器附加到每个父下拉列表中。

这样,您就可以通过对控制器的ajax调用来获取子字段的值,该控制器会向您发送一个JSON数组。

例如,您的第一个父/子元素是“国家/地区”和“州”:

<select name="country_list">
    <option value="1">USA</option>
</select>

<select name="states_list">
    <option value="0">-- empty value --</option>
</select>

然后你的jQuery应该是这样的:

$("#country_list").change(function() {
    var countryId = $('#country_list').val();
    var callUrl = 'CONTROLLER URL TO CALL';

    // make your ajax call here
    $.ajax({
       url : callUrl,
       type : 'GET',
       dataType : 'json',
       success : function(response){
                     // populate the child list with the JSON values
                     $.each(response,function(key, value) {
                         $('#states_list').append('<option value=' + key + '>' + value + '</option>');
                     });

                     // enable the child list 
                     $('#states_list').prop('disabled', false);
                 }
    });
});

当然你的控制器应该返回一个JSON数组。