gpt4 book ai didi

php - Yii2 kartik-v select2 小部件 allowClear 和占位符无法正常工作

转载 作者:行者123 更新时间:2023-12-05 02:20:33 26 4
gpt4 key购买 nike

我使用的是 Yii2 的高级模板。每当 select2 'placeholder' 被赋值时,小部件将不会显示初始值。我可以通过使用 ['placeholder' => $placeholder] 并在初始值存在时将变量设置为 NULL 来解决这个问题。但是,如果占位符为 NULL 并且显示初始值,则 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(''); ?>

Controller :

$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 由 Controller 使用 key 预填充。我的问题是无论 $profile->associationSelect 是否被填充,小部件总是显示“选择关联 ...”。如果 $associationSelect 为空,我只希望占位符显示,因为这就是占位符的工作方式。如果我将占位符留空 (NULL),清除选项 ("x") 会显示在小部件中,但不会清除文本(即单击时它不会执行任何操作)。

最佳答案

我要么没有完全理解你的问题,要么我认为我只做了一些改变就解决了你的问题。我在这里放了几个不同的东西,所以你可能不需要其中的一些。

/*
* $profile->associationSelect: data list and assigned default value by key: 2 (third element).
* With this line, your select2 will have a default chosen value from data list.
* Remove this (1) line to show placeholder instead.
*/
if (!empty($associationList)) {
$form->associationSelect = 2;
echo $form->field($profile, 'associationSelect')->widget(Select2::classname(), [
'data' => $associationList,
'language' => 'en',
'theme' => 'krajee',
'options' => [
'placeholder' => $associationList[3] // Placeholder will show 4th element from data list (we do have a list)
],
'pluginOptions' => [
'allowClear' => true
],
]);
} else {
echo $form->field($profile, 'associationSelect')->widget(Select2::classname(), [
'data' => $associationList,
'language' => 'en',
'theme' => 'krajee',
'options' => [
'placeholder' => 'Please select a value' // Placeholder will be default text since we don't have a list.
],
'pluginOptions' => [
'allowClear' => true
],
]);
}

您可以选择所需的选项(无论是使用默认选择值还是仅使用占位符)。在这两种情况下,您都可以使用 allowClear 并且不会收到任何错误(当然,如果操作正确的话)。

关于php - Yii2 kartik-v select2 小部件 allowClear 和占位符无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38730102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com