php - yii2 kartik select2 小部件不显示列表的第一个元素
问题描述
我是 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>
我检查“全选”然后按“更新”按钮
但所有项目都保存到数据库:
如何克服我的问题并使选择小部件正常工作?我很累。提前致谢!
解决方案
You should have to add 'maintainOrder' => true,
for example:
<?= 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
],
]) ?>
推荐阅读
- excel - 如何使用 VBA 模块计算新工作表中输出中的重复值
- python - 如何在魔术函数定义中引用“In”?
- python - 如何以最佳方式替换数据框
- arrays - Swift如何过滤2个数组
- multithreading - 在不使用 OMP TASK 的情况下如何做到这一点?
- vue.js - 当我尝试使用组件中的方法更改数据时,为什么我的 vuex 存储状态更改?
- python - Django 文件上传器在使用 celery 上传更多感谢 2.5mb 图像时抛出错误“无法腌制 '_io.BufferedRandom' 对象”
- flutter - 如何使用下拉功能创建 ListView listTile
- html - 自动换行时去掉右边的空白区域
- java - AES/CBC/PKCS5PADDING IV - NodeJs 中的加密(用 Java 加密)