我正在使用Yii2的高级模板。每当select2'占位符'被分配一个值时,小部件将不显示初始值。我可以通过使用['placeholder' => $placeholder]
解决这个问题,并且每当初始值存在时将该变量设置为NULL。但是,如果占位符为NULL并且显示初始值,则allowClear不起作用。我究竟做错了什么?Yii2 kartik-v select2小部件allowClear和占位符无法正常工作
检视:
use kartik\select2\Select2;
<?= $form->field($profile, 'associationSelect')->widget(Select2::classname(), [
'data' => $associationList,
'language' => 'en',
'theme' => 'krajee',
'options' => ['placeholder' => 'Select Association ...'],
'pluginOptions' => ['allowClear' => true],
])->label(''); ?>
控制器:
$associationArray = Association::find()
->select('association, id')
->indexBy('id')
->orderBy('association')
->all();
$associationList = ArrayHelper::map($associationArray, 'id', 'association');
$ associationList是例如{[1] => “association1” 的阵列,[2] =>“association2,[3]。 ..“}。
$profile->associationSelect
由控制器用密钥预先填充。我的问题是,小部件总是显示'Select Association ...',无论$profile->associationSelect
是否被填充。我只希望占位符显示$associationSelect
是否为空,因为占位符应该如何工作。如果我留下占位符为空(NULL),则清除选项(“x”)显示在窗口小部件中,但不会清除文本(即单击时不会执行任何操作)。
作为一条评论。我不使用那个小部件,我更喜欢使用常规下拉列表提示第一个值,添加类“select2”并使用这个库:https://github.com/select2/select2/blob/master/LICENSE.md。任何使用kartik-v的优势? – Eduardo
@Eduardo看起来像是一样的。 Kartik小部件为select2提供Yii2包装器。请参阅https://github.com/select2/select2。 – SM0827