使用标记过滤Gridview

时间:2017-09-20 16:28:40

标签: gridview yii2 tags jquery-select2

查看代码:

 [
        'attribute' => 'name',
        'filterType'=>GridView:: FILTER_SELECT2,
        'filter'=>ArrayHelper::map(\app\models\Item::find()->orderBy('category')->asArray()->all(), 'name', 'name'),
        'filterWidgetOptions'=>[
            'pluginOptions'=>['allowClear'=>true, 'minimuminputLength' => 3],
        ],
        'filterInputOptions'=>['placeholder'=>'Any Item', 'multiple' => true ],
        'group'=>true,  // enable grouping
        'label' => 'Item',
        'contentOptions' =>
            ['style'=>'max-width: 150px; font-size: 12px;overflow: auto; word-wrap: break-word;'],

    ],

该代码是可行的,但标签值应该是从列表中选择的项目名称值,而我想要的是我可以为标签过滤器/搜索键入任何单词而不是我应该从列表中选择值。 谢谢

1 个答案:

答案 0 :(得分:0)

使用以下代码在网格视图中获取TypeAhead过滤器值:

     [
            'attribute' => 'attributeName',
            'format' => 'raw',
            'value' => function ($data) {
                return$data->attributeName;
            },
            'filter' => Select2::widget([
                'model' => $searchModel,
                'attribute' => 'attributeName',
                'data' => Model::getAllModelListFunction(),
                'options' => [
                    'placeholder' => 'Select',
                ],
                'pluginOptions' => [
                    'allowClear' => true
                ],
            ]),
        ],

getAllModelFunction应该是这样的:

public static function getAllModelFunction()
{
   $data = self::find()->select('id,name')->asArray()->all();
   return ArrayHelper::map($data, 'id', 'title');
}

请记住在Index.php文件中安装并使用以下小部件:

  use kartik\select2\Select2;