如何在 yii kartik 小部件 select2 和 ajax 上使用多个 select
How to use multiple select on yii kartik widget select2 and ajax
我正在尝试为我的 Yii2 项目使用 Kartik Select2 小部件。
我将使用 Ajax Loading 和 everithing works find,但如果我设置了多个选项,它会给我这个错误。
PHP Warning – yii\base\ErrorException array_combine(): Both parameters
should have an equal number of elements
这个错误在Select2.php这一行
$this->data = $multiple ? array_combine((array)$key, (array)$val) : [$key => $val];
我认为这是因为缺少数据属性,但是如果我添加数据属性 ajax 无法正常工作。
这是我的观点:
$form->field($model, 'lista_art')->widget(Select2::classname(), [
'initValueText' => "", // set the initial display text
//'data' => '',
'options' => ['placeholder' => 'Select a color ...',
//'multiple' =>true, // error here
],
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'ajax' => [
'url' => \yii\helpers\Url::to(['lista-articoli']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { console.log(markup);return markup; }'),
'templateResult' => new JsExpression('function(lista_art) { return lista_art.art_modello; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.art_modello; }'),
],
]);
还尝试在 'pluginOptions' 数组中插入多个选项,但不起作用。
是否可以在 Ajax 加载中使用多个选项?
P.s。我已经检查了我的开发者工具栏,响应是正确的,并且给了我预期的结果。
您忘记设置数据属性
示例如何使用 kartik select 2 模型和活动形式
$model->keywords = [1, 2]; // NOTE THIS IS AN ARRAY of keys
$form->field($model, 'keywords')->widget(Select2::className(), [
'pluginOptions' => [
'tags' => true,
'multiple' =>true,
],
'data' => [1=>'keyword1', 2=>'keyword2', 3=>'keyword3'],
])
更新
尝试将数据设置为空数组
'data' => []
我正在尝试为我的 Yii2 项目使用 Kartik Select2 小部件。 我将使用 Ajax Loading 和 everithing works find,但如果我设置了多个选项,它会给我这个错误。
PHP Warning – yii\base\ErrorException array_combine(): Both parameters should have an equal number of elements
这个错误在Select2.php这一行
$this->data = $multiple ? array_combine((array)$key, (array)$val) : [$key => $val];
我认为这是因为缺少数据属性,但是如果我添加数据属性 ajax 无法正常工作。
这是我的观点:
$form->field($model, 'lista_art')->widget(Select2::classname(), [
'initValueText' => "", // set the initial display text
//'data' => '',
'options' => ['placeholder' => 'Select a color ...',
//'multiple' =>true, // error here
],
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'allowClear' => true,
'minimumInputLength' => 3,
'language' => [
'errorLoading' => new JsExpression("function () { return 'Waiting for results...'; }"),
],
'ajax' => [
'url' => \yii\helpers\Url::to(['lista-articoli']),
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { console.log(markup);return markup; }'),
'templateResult' => new JsExpression('function(lista_art) { return lista_art.art_modello; }'),
'templateSelection' => new JsExpression('function (lista_art) { return lista_art.art_modello; }'),
],
]);
还尝试在 'pluginOptions' 数组中插入多个选项,但不起作用。 是否可以在 Ajax 加载中使用多个选项?
P.s。我已经检查了我的开发者工具栏,响应是正确的,并且给了我预期的结果。
您忘记设置数据属性
示例如何使用 kartik select 2 模型和活动形式
$model->keywords = [1, 2]; // NOTE THIS IS AN ARRAY of keys
$form->field($model, 'keywords')->widget(Select2::className(), [
'pluginOptions' => [
'tags' => true,
'multiple' =>true,
],
'data' => [1=>'keyword1', 2=>'keyword2', 3=>'keyword3'],
])
更新 尝试将数据设置为空数组 'data' => []