Повторно заполнить данные select2 при использовании form_validation () CodeIgniter - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь снова заполнить форму, используя select2 и кодовое значение form_validation(), но не могу заставить ее работать. Мой плагин select2 использует данные типа json. Вот мой код select2 HTML:

<select name="secondary_icdx" id="multiple-secondary-icdx" class="form-control" data-url-source="<?php echo site_url('frontoffice/diagnose/code'); ?>"></select>

А вот мой код select2 javascript:

var sourceDiagnose  = $('#multiple-secondary-icdx').data('url-source');
$("#multiple-secondary-icdx").select2({
    closeOnSelect: false,
    placeholder: 'Select secondary diagnose if any...',
    minimumInputLength: 3,
    language: {
        inputTooShort: function () {
            return "Type min. 3 characters...";
        },
        noResults: function() {
            return "Nothing found!"
        },
        searching: function() {
            return "Searching…"
        }
    },
    ajax: {
        url: function (params, data) {
            return sourceDiagnose + '/' + params.term;
        },
        dataType: 'json',
        delay: 250,
        processResults: function (response) {
            return {
                results: response,
                pagination: {
                    more: (response.page * 30) < response.total_count
                }
            };
        },
        cache: true
    }
});

Я пытался использовать оператор if, когда установлен $_POST['secondary_icdx'] , внутри выберите элемент, например, так:

<?php if ( isset($_POST['secondary_icdx']) ):
    foreach ( $_POST['secondary_icdx'] AS $sec ):
?>
  <option value="<?php echo $sec; ?>"><?php echo $sec; ?></option>
<?php endforeach; endif; ?>

... но не повезло! Есть ли способ использовать set_select() или что-то еще, когда форма проверяется? Я полностью сбит с толку. Любая помощь здесь будет высоко ценится! Заранее благодарим.

ПРИМЕЧАНИЕ: код icdx содержит более 22 тыс. Данных!

1 Ответ

0 голосов
/ 12 января 2020

вам нужно запускать foreach только в том случае, если значение уже сохранено, а остальное будет выполнено самим выбором 2. Не забудьте обновить файл выбора 2 и установить поле выбора на несколько. я использую cdn:

<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>

и вот мой код:

<select class="form-control select2" id="health_type" name="health_type[]" multiple="multiple">
<option value="all">--Select Health Concern Type--</option>
 <?php foreach ($health_type as $cat) :?> 
<option value="<?=$cat['id'];?>" <?php if(!empty($health_arr) && in_array($cat['id'], $health_arr) ) echo 'selected'; ?> ><?=$cat['name'];?></option>
<?php endforeach; ?>
</select>

Моя избранная 2 инициализация:

$('.select2').select2({
    placeholder:"Select multiple variants"
});

$(document).ready(function() {
    $('.select2').select2();
});
...