簡體   English   中英

yii2 kartik select2 小部件不顯示列表的第一個元素

[英]yii2 kartik select2 widget doesn't show first element of the list

我是 js 開發人員,但是我接到了一個任務來解決我們的 php Yii2 站點中的一些問題。 我是 yii2 和 php 的新手,所以我堅持使用 kartik yii2 小部件。 代碼不是我寫的。 當我從列表中選擇第一個選項時 - 它正確保存到 db 但在小部件本身中顯示第二個項目,而不是第一個項目。 當我從列表中選擇所有項目時,小部件也會剪切第一個項目。 但是db中的數據是正確的。

這是代碼:

   <?php
    ...
   function sortArray($a, $b)
   {
     return strcmp($a, $b);
   }

 $projects = ArrayHelper::map($projects, 'id', 'title');
 usort($projects, 'sortArray');
 ?>
<div class="x_title"><h3><?= Html::encode($this->title) ?></h3></div>

<div class="x_content">
    <?php $form = ActiveForm::begin(); ?>
    <div class="form-group">
        <?= Select2::widget([
            'name' => 'projects[]',
            'options' => ['placeholder' => 'Выберите проект...'],
            'language' => 'ru',
            'value' => array_keys(ArrayHelper::map($model->projects, 'id', 'title')),
            'data' => $projects,
            'pluginOptions' => [
                'allowClear' => true,
                'multiple' => true
            ],
        ]) ?>
    </div>
    <div class="form-group">
        <?= Html::submitButton('Обновить', ['class' => 'btn btn-primary']) ?>
    </div>
    <?php ActiveForm::end() ?>
</div>

我選中“全選”然后按“更新”按鈕

我選中“全選”然后按“更新”按鈕

按第一個項目后消失,如在下一個屏幕上看到的那樣。

列表中的第一項不存在

但所有項目都保存到數據庫:

但所有項目都保存到數據庫

如何克服我的問題並使選擇小部件正常工作? 我很累。 提前致謝!

您應該添加'maintainOrder' => true,例如:

 <?= Select2::widget([
        'name' => 'projects[]',
        'maintainOrder' => true, // add here the property
        'options' => ['placeholder' => 'Выберите проект...'],
        'language' => 'ru',
        'value' => array_keys(ArrayHelper::map($model->projects, 'id', 'title')),
        'data' => $projects,
        'pluginOptions' => [
            'allowClear' => true,
            'multiple' => true
        ],
  ]) ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM