简体   繁体   English

使用PHP的Select2 optgroup格式

[英]Select2 optgroup format using PHP

I've got an ajax call that get dynamic data and places them in select2 as follow : 我有一个ajax调用,它获取动态数据并将其放置在select2中,如下所示:

$.ajax({
    type: 'get',
    url: '/api/?stuff='+c,
    dataType: "json",
    success: function (response) {
        // If select2 is already defined, we destroy it and rebuild it with the new data
        if(typeof $(".select2edit").data('select2') !== 'undefined') {
            $(".select2edit").select2('destroy').select2({ data: response, width: '100%', closeOnSelect: false });
        } else {
            $(".select2edit").select2({ data: response, width: '100%', closeOnSelect: false });
        }
    }
});

I create the response using PHP and then transform it to JSON before sending it : 我使用PHP创建响应,然后在发送之前将其转换为JSON:

$old_emplacement = '';
$results = array();
$i = -1;

while($array_campaign = tep_db_fetch_array($campaign)){
    if ($array_campaign['name'] != $old_emplacement) {
        $i++;
        $results['results'][$i]['text'] = $array_campaign['name'];
        $old_emplacement = $array_campaign['name'];
        $c = 0;
    }
    $results['results'][$i]['children'][$c]['id'] = $array_campaign['id'];
    $results['results'][$i]['children'][$c]['text'] = $array_campaign['c_name'];
    $c++;
}

$results['pagination']["more"] = true; 

Thus resulting in the following JSON format : 因此产生以下JSON格式:

{
  "results": [
    { 
      "text": "Name 1", 
      "children" : [
        {
            "id": 1,
            "text": "Text 1.1"
        },
        {
            "id": 2,
            "text": "Text 1.2"
        }
      ]
    },
    { 
      "text": "Name 2", 
      "children" : [
        {
            "id": 1,
            "text": "Text 2.1"
        },
        {
            "id": 2,
            "text": "Text 2.2"
        }
      ]
    }
  ],
  "paginate": {
    "more": true
  }
}

I get a No results found. No results found. when select2 initializes and loads. 当select2初始化并加载时。 And I have no idea why. 而且我不知道为什么。 It's the correct format as far as the documentation is saying and other questions seem to confirm. 文档而言,这是正确的格式,并且其他问题似乎可以肯定。 Any ideas where could the problem be coming from? 任何想法可能出在哪里?

It's also good to note that my select2 is inside a form which is inside a modal, and this is it's html : 还需要注意的是,我的select2在模式内部的表单中,这是html:

<select name="xx[]" id="edit-xx" name='xx' class="form-control select2edit" multiple>
</select> 

The problem was with the format generated by my PHP code. 问题出在我的PHP代码生成的格式上。 I'm posting the result here for anyone trying to generate a select2 optgroup format using PHP and for my own reference : 我将结果发布在这里,供尝试使用PHP生成select2 optgroup格式的人员参考,以供我参考:

$old_emplacement = '';

$results = array();
$i = -1;

while($array_campaign = tep_db_fetch_array($campaign)){
    if ($array_campaign['name'] != $old_emplacement) {
        $i++;
        $results[$i]['text'] = $array_campaign['name'];
        $old_emplacement = $array_campaign['name'];
        $c = 0;
    }
    $results[$i]['children'][$c]['id'] = $array_campaign['id'];
    $results[$i]['children'][$c]['text'] = $array_campaign['c_name'];
    if(in_array($array_campaign['id'], $campaigns_array)) {
        $results[$i]['children'][$c]['selected'] = true;
    }
    $c++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM