推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

YII2 GridView数据小部件

   2023-07-05 网络整理佚名1210
核心提示:数据小部件小部件2.什么是数据提供者数据提供者的种类在此接口中拥有一下方法:模型中添加get属性方法,推荐使用。视图中直接使用属性定义的格式定义好方法后即可像普通属性一样使用,但本质区别是当属性被读取时,对应的将被调用,而当属性被赋值时,对应的也被调用。若只定义而没有的属性是只读属性对其赋值不会抛出异常。动作列自定义动作列的配置属性

数据小部件

     $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            ['attribute'=>'id','contentOptions'=>['width'=>'5%']],
            'username',
            'nickname',
            'realname',
            'email:email',
            ['attribute'=>'created_at','format'=>['date','php:Y-m-d H:i']],
            [
                'class' => 'yii\grid\ActionColumn',
                'template'=>'{view} {update} {delete} {approve}',
            ],
        ],
    ]); ?>

1. 小部件 2. 列类 3. 数据列的自定义数据提供程序。 什么是数据提供者

common/models/PostSearch.php

    public function search($params)
    {
        $query = Post::find();
        // add conditions that should always apply here
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            //分页
            'pagination' => [
                'pageSize'=> 2
            ],
            //排序
            'sort'=>[
                'defaultOrder'=>['id'=>SORT_DESC]
            ]
        ]);
        $this->load($params);
        if (!$this->validate()) {
            // uncomment the following line if you do not want to return any records when validation fails
            // $query->where('0=1');
            return $dataProvider;
        }
        // grid filtering conditions
        $query->andFilterWhere([
            'id' => $this->id,
            'status' => $this->status,
            'type' => $this->type,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,
            'created_by' => $this->created_by,
            'updated_by' => $this->updated_by,
        ]);
        $query->andFilterWhere(['like', 'subject', $this->subject])
            ->andFilterWhere(['like', 'content', $this->content])
            ->andFilterWhere(['like', 'tag', $this->tag]);
        return $dataProvider;
    }

2. 数据提供者类型

继承自,实现e接口。 该接口有以下方法:

数据提供者定制

       // add conditions that should always apply here
       $dataProvider = new ActiveDataProvider([
           'query' => $query,
           //分页
           'pagination' => [
               'pageSize'=> 2
           ],
           //排序
           'sort'=>[
               'defaultOrder'=>['id'=>SORT_DESC],
               'attributes'=>['id','title']
           ]
       ]);

字符串截取

方式1

 $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        ['attribute'=>'id', 'contentOptions'=>['width'=>'5%']],
        'post_id',
        'status',
        ['attribute'=>'content','value'=>function($model){
            $str = strip_tags($model->content);
            $len = mb_strlen($str);
            return mb_substr($str,0,20,'utf-8').($len>20?'...':'');
        }],
        'url:url',
        // 'email:email',
        // 'remind',
        // 'created_at',
        // 'created_by',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

方法二:使用get方法

推荐在模型中添加 get 属性方法。


public function getBegin()
{
    $str = strip_tags($this->content);
    $len = mb_strlen($str);
    return mb_substr($str,0,20,'utf-8').($len>20?'...':'');
}

直接在视图中

 $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        ['attribute'=>'id', 'contentOptions'=>['width'=>'5%']],
        'post_id',
        'status',
        ['attribute'=>'content','value'=>'begin'],
        'url:url',
        // 'email:email',
        // 'remind',
        // 'created_at',
        // 'created_by',
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

1. 属性定义的格式

方法名称以 get 开头,后跟属性名称。

方法名称以 set 开头,后跟属性名称。

2. 属性的使用

方法定义后,就可以像普通属性一样使用,但本质的区别在于,当读取属性时,会调用对应的方法,而当属性赋值时,也会调用对应的方法。

3、注意问题

要使用和定义属性,类必须继承自 yii\base\ 或其子类。 该方法不仅适用于模型类,只要是继承自 yii\base\ 类的都可以使用。

如果只定义但未定义的属性是只读属性,则对其赋值不会抛出异常。

该方法定义的属性大部分是只读的,一般不需要持久化,大部分是业务逻辑所需的计算结果。

操作栏定制

操作列的配置属性

[
    'class' => 'yii\grid\ActionColumn',
    'template'=>"{view} {update} {delete} {approve}",
    'buttons'=>[
        'approve'=>function($url,$model,$key){
            $options = [
                'title'=>Yii::t('common','Approve'),
                'aria-label'=>Yii::t('common','Approve'),
                'data-/confirm/i'=>Yii::t('common','Are you sure?'),
                'data-method'=>'post',
                'data-pjax'=>'0'
            ];
            return Html::a('',$url,$options);
        }
    ]
],

 
标签: gridview
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON