Yii2: kartik\Select2 Gridview 过滤器中的下拉列表

Yii2: kartik\Select2 dropdown list in Gridview filter

我想用 Select2 按钮(允许用户手动编写选项的下拉按钮)更改 Gridview 中的内置搜索框过滤器。我使用两个合并表,wp_id 是两个表中的一列,而 user_idAccounts 模型中的一列。使用这里使用的代码,我在我的网格上看到一个简单的文本输入默认值。

<?php echo GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            [
                'attribute' => 'wp_id',
                'value' => 'accounts.user_id',
                'filter' => $form->field($searchModel, 'wp_id')
                    ->widget(
                        Select2::className(),
                        [
                            'data' => ArrayHelper::map(Accounts::find()->all(), 'wp_id', 'user_id'),
                            'options' => ['placeholder' => ' --Filter by user id-- '],
                            'language' => 'en',
                            'pluginOptions' => [
                                'allowClear' => true,
                            ],
                        ]),
            ],
        ],
]
) ?>

我在这里错过了什么?

因为这里没有您要使用的 $form,您应该直接使用小部件初始化 select2 并指定 attributemodel 属性选择 2 个小部件。

在下面查看您的代码应该是什么样子。

<?php

    echo GridView::widget(
        [
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                [
                    'attribute' => 'wp_id',
                    'value' => 'accounts.user_id',
                    'filter' => Select2::widget(
                        [
                            'model' => $searchModel,
                            'attribute' => 'wp_id',
                            'data' => ArrayHelper::map(Accounts::find()->all(), 'wp_id', 'user_id'),
                            'options' => ['placeholder' => ' --Filter by user id-- '],
                            'language' => 'en',
                            'pluginOptions' => [
                                'allowClear' => true,
                            ],
                        ]
                    ),
                ],
            ],
        ]
);