Yii2.0在GridView中下拉过滤筛选的实现 [ 2.0 版本 ]

Yii2.0在GridView中下拉过滤筛选的实现

细微的方便也许对于我们的用户来说将会获得最好的体验,用最方便,最快捷,最易操作的方式实现用户需要的功能是我们的工作和职责,今天分享一个在Yii2.0在GridView中下拉过滤筛选的实现,希望能够大家带来一点点的帮助和建议,不说废话了,直接看demo吧

如下是文章管理列表页中如何实现的demo

view层代码

 GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
             [
                'attribute' => 'category',
                'label'=>'栏目',
                'value'=>
                 function($model){
                      return  Article::get_type_text($model->category);   //主要通过此种方式实现
                    },
                'filter' => Article::get_type(),     //此处我们可以将筛选项组合成key-value形式
             ],

            'title',
            [
                'attribute' => 'uid',
                'label'=>'管理员',
                'value'=>
                function($model){
                    return  Article::get_uid_type_text($model->uid);   //主要通过此种方式实现
                },
            ],

            [
                'attribute' => 'updatetime',
                'label'=>'更新时间',
                'value'=>
                function($model){
                    return  date('Y-m-d H:i:s',$model->updatetime);   //主要通过此种方式实现
                },
                'headerOptions' => ['width' => '170'],
            ],

            ['class' => 'yii\grid\ActionColumn', 'header' => '操作'],
        ],
    ]); ?>
model层代码
   /**
     * 将栏目组合成key-value形式
     */
   public static  function  get_type(){
      $cat = Category::find()->all();
      $cat = ArrayHelper::map($cat, 'id', 'name');
      return $cat;
   }

       /**
	 * 通过栏目id获得栏目名称
	 * @param unknown $id
	 * @return Ambigous 
	 */

    public static  function  get_type_text($id){

       $datas = Category::find()->all();
       $datas = ArrayHelper::map($datas, 'id', 'name');
       return  $datas[$id];

    }

好了至此我们的基本功能就已经实现了,功能很简单但是却很有用。

实现效果如图所示:

效果展示完毕!

原文地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Yii2-GridView ,你可以通过自定义数据提供者类来支持对非模型字段的排序。以下是示例代码: 1. 创建自定义数据提供者类并实现 'sort' 方法: ```php namespace app\models; use yii\data\ActiveDataProvider; use yii\data\Sort; class CustomDataProvider extends ActiveDataProvider { public function sortModels($models, $sort) { $sort->applyOrder($models); return $models; } protected function prepareModels() { $models = parent::prepareModels(); if ($this->sort !== false) { $models = $this->sortModels($models, $this->getSort()); } return $models; } protected function prepareSort() { $sort = parent::prepareSort(); $sort->attributes['extra_field'] = [ 'asc' => ['extra_field' => SORT_ASC], 'desc' => ['extra_field' => SORT_DESC], 'default' => SORT_ASC, 'label' => 'Extra Field', ]; return $sort; } } ``` 2. 在 GridView 使用自定义数据提供者类: ```php $dataProvider = new CustomDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 10, ], ]); <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ 'id', 'name', [ 'attribute' => 'extra_field', 'label' => 'Extra Field', ], ], ]); ?> ``` 在上面的示例,自定义数据提供者类 'CustomDataProvider' 继承了 Yii2 的 'ActiveDataProvider' 类,并实现了 'sort' 方法。在该方法,我们使用了传入的 'sort' 对象,对非模型的字段进行排序。 然后,我们在 'prepareSort' 方法添加了 'extra_field' 属性的排序规则。最后,在 GridView 使用自定义数据提供者类即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值