我尝试使用Select2 Kartik过滤列,但没有任何内容出现。 select2没有完全加载。将显示标签显示为无。
/views/user/index.php
'columns' => [
[
'class' => 'yii\grid\SerialColumn',
],
'name',
/*
This code not works :(
*/
[
'attribute' => 'identification_type',
'value'=> function($model){
return Yii::t('app', TYPE_ID[$model->identification_type]);
},
'filter' => Select2::widget([
'model' => $searchModel,
'attribute' => 'identification_type',
'data' => Arrai::t('person',TYPE_ID),
'theme' => Select2::THEME_BOOTSTRAP,
'hideSearch' => true,
'options' => [
'placeholder' => Yii::t('person', 'Identification type'),
]),
],
/*
This code works!
*/
[
'attribute' => 'identification_type',
'filter' => Arrai::t('app', TYPE_ID),
'value'=> function($model){
return Yii::t('app', TYPE_ID[$model->identification_type]);
},
'filterInputOptions' => [
'class' => 'selectpicker',
'data-style'=>"btn btn-primary btn-round",
'title'=> "Sin seleccion",
],
],
// other columns
]
以下是html的结果:
Result HTML
<div class="form-group is-empty">
<select id="personsearch-identification_type" class="form-control" name="PersonSearch[identification_type]"
data-s2-options="s2options_6cc131ae"
data-krajee-select2="select2_0ed9734f"
style="display:none">
<option value="">Tipo de identificación</option>
<option value="CC">Citizenship card</option>
<option value="CE">Foreigner ID</option>
<option value="PAS">Passport</option>
<option value="NIT">NIT</option>
</select>
<span class="material-input"></span></div>
在此结果中,需要 <span>
标记来显示Select2。但它没有出现。
答案 0 :(得分:0)
使用select2将列配置更改为以下内容,如果我没有错误data
,则将文本提供给Arrai::t('person', TYPE_ID)
选项,而它应该是硬编码的数组或来自数据库的数组。
[
'attribute' => 'identification_type',
'value'=> function($model){
return Yii::t('app', TYPE_ID[$model->identification_type]);
},
'filter' => Select2::widget([
'model' => $searchModel,
'attribute' => 'identification_type',
'data' => ['1'=>'option1','2'=>'option2'],
'theme' => Select2::THEME_BOOTSTRAP,
'hideSearch' => true,
'pluginOptions' => [
'allowClear' => true,
'width' => 'resolve',
],
'options' => [
'placeholder' => Yii::t('person', 'Identification type'),
]
),
],
我正在使用硬编码数组,你可以根据你的要求更新它,如果下拉列表的值应来自数据库,那么你可以用
替换数组yii\helpers\ArrayHelper::map(Model::find()->asArray()->all(),'id','name')
其中Model
应替换为您的特定型号名称,'id' , 'name'
也应替换为有效的列名。
答案 1 :(得分:0)
我发现问题发生的事情是我启用了高级搜索。并且高级搜索的select2与GridView过滤器具有相同的ID。
我只需要修改ID名称即可。
[
'attribute' => 'id_setting_person_identification_type',
'value' => function($model){
$type_identication = SettingPerson::getMapGroup('Tipo de identificación');
return Yii::t('app', $type_identication[$model->id_setting_person_identification_type]);
},
'filterType' => GridView::FILTER_SELECT2,
'filter' => $type_identication,
'filterWidgetOptions' => [
'pluginOptions' => ['allowClear' => true],
],
'filterInputOptions' => [
'placeholder' => '-',
'id' => 'id_setting_person_identification_type_gridview',
]
],