废话不多说了,先给大家展示下效果图,如果大家还很满意请继续往下阅读:
具体怎么实现喃?考虑到一张数据表要下拉效果的字段可能有很多个,我们先在其model中实现一个方法方便后续操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/**
* 下拉筛选
* @column string 字段
* @value mix 字段对应的值,不指定则返回字段数组
* @return mix 返回某个值或者数组
*/
public static function dropDown ( $column , $value = null)
{
$dropDownList = [
'is_delete' => [
'0' => '显示' ,
'1' => '删除' ,
],
'is_hot' => [
'0' => '否' ,
'1' => '是' ,
],
//有新的字段要实现下拉规则,可像上面这样进行添加
// ......
];
//根据具体值显示对应的值
if ( $value !== null)
return array_key_exists ( $column , $dropDownList ) ? $dropDownList [ $column ][ $value ] : false;
//返回关联数组,用户下拉的filter实现
else
return array_key_exists ( $column , $dropDownList ) ? $dropDownList [ $column ] : false;
}
|
然后我们上代码看看具体怎么实现的下拉搜索
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?= GridView::widget([
'dataProvider' => $dataProvider ,
'columns' => [
// ......
[
'attribute' => 'is_hot' ,
'value' => function ( $model ) {
return Article::dropDown( 'is_hot' , $model ->is_hot);
},
'filter' => Article::dropDown( 'is_hot' ),
],
[
'attribute' => 'is_delete' ,
'value' => function ( $model ) {
return Article::dropDown( 'is_delete' , $model ->is_delete);
},
'filter' => Article::dropDown( 'is_delete' ),
],
// ......
],
]); ?>
|
像这样,我们就简单地实现了两个下拉效果,要实现筛选功能,在你的dataProvider自定添加该字段的搜索条件即可。
关于Yii2 GridView实现下拉搜索教程就给大家介绍这么多,希望对大家有所帮助!