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

Posted

技术标签:

【中文标题】Yii2:Gridview过滤器中的kartik\\Select2下拉列表【英文标题】:Yii2: kartik\Select2 dropdown list in Gridview filterYii2:Gridview过滤器中的kartik\Select2下拉列表 【发布时间】:2020-04-14 13:25:15 【问题描述】:

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

<?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,
                            ],
                        ]),
            ],
        ],
]
) ?>

我在这里错过了什么?

【问题讨论】:

如果是Wordpress,Wordpress插件相关的,会有所帮助。 没有使用Wordpress,它是在Yii2基本框架上编写的。 【参考方案1】:

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

看看你的代码应该是什么样子的。

<?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,
                            ],
                        ]
                    ),
                ],
            ],
        ]
);

【讨论】:

非常感谢,就下拉按钮而言,它可以工作。但是现在出现了另一个问题 - 过滤器不会过滤任何内容,点击它只会刷新页面。 你在搜索模型中实现了过滤器吗? 不,我没有。我应该实现哪个过滤器接口? @IvailoPetrov 这是一个单独的问题,您应该为此添加一个新问题,该问题中的问题已解决 好的,我添加了一个关于新问题的新问题。再次感谢您的支持!

以上是关于Yii2:Gridview过滤器中的kartik\Select2下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

kartik\Select2 作为 yii2\grid 中的过滤器输入

YII2 gridview问题的弹出窗口

来自 HTML 中的新页面 kartik\mpdf (Yii2)

Yii2 GridView 按年份过滤日期

在网格中为动态列创建过滤器

Yii2 GridView - 将搜索过滤器更改为onchange事件而不是提交