Yii2 GridView常见操作

时间: 2017-02-13  分类: Yii2  收藏
下拉搜索
日期格式化并实现日期可搜索
根据参数进行是否显示
链接可点击跳转
显示图片
html渲染
自定义按钮
设定宽度等样式
自定义字段
自定义行样式
增加按钮调用js操作
yii2 GridView 下拉搜索实现案例教程
yii2 GridView 日期格式化并实现日期可搜索 案例
是否显示某列案例

type的值等于1的时候,列name才显示,否则该列不显示

[
    ’attribute’ => ’name’,
    ’value’ => $model->name,
    ’visible’ => intval(Yii::$app->request->get(’type’)) == 1,
],



链接
这个跟接下来我们要说的html渲染的效果十分类似,这里要说的是列的属性值 format,具体都有哪些格式可查看文件 yiii18nFormatter.php,各种format都可以解决


[
    ’attribute’ => ’order_id’,
    ’value’ => function ($model) {
        return Html::a($model->order_id, "/order?id={$model->order_id}", [’target’ => ’_blank’]);
    },
    ’format’ => ’raw’,
],


图片
同上,这里只需要指定format格式为image即可,format第二个参数可设定图片大小,可参考下面的代码

[
    ’label’ => ’头像’,
    ’format’ => [
        ’image’,
    [
        ’width’=>’84’,
        ’height’=>’84’
    ]
    ],
    ’value’ => function ($model) {
        return $model->image;
    }
],



html渲染

[
    ’attribute’ => ’title’,
    ’value’ => function ($model) {
        return Html::encode($model->title);
    },
    ’format’ => ’raw’,
],



自定义按钮

[
    ’class’ => ’yiigridActionColumn’,
    ’template’ => ’{get-xxx} {view} {update}’,
    ’header’ => ’操作’,
    ’buttons’ => [
        ’get-xxx’ => function ($url, $model, $key) {
            return Html::a(’获取xxx’, $url, [’title’ => ’获取xxx’] );
        },
    ],
],



设定宽度


[
    ’attribute’ => ’title’,
    ’value’ => ’title’,
    ’headerOptions’ => [’width’ => ’100’],
],


换行

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'options'=>['HeaderStyle-Wrap'=>true,],   //只需给GridView增加此参数即可自动换行


自定义字段
指在表格里增加一列且数据库中不存在对应的列

[
    ’attribute’ => ’消费金额’,
    ’value’ => function ($model) {
        // 这里可以根据该表的其他字段进行关联获取
    }
],



自定义行样式

    // ......
    ’dataProvider’ => $dataProvider,
    ’rowOptions’ => function($model, $key, $index, $grid) {
        return [’class’ => $index % 2 ==0 ? ’label-red’ : ’label-green’];
    },
    // ......
]); ?>




按钮调用js操作

//动作列 用于显示一些动作按钮,如每一行的更新、删除操作。
[
    'class' => 'yii\grid\ActionColumn',
    'header' => '操作',
    //'template' => '{view}  {update}  {delete}',
    'template' => '{update}  {delete}',
    'headerOptions' => ['width' => '100'],
    'buttons' => [
        'update' => function($url, $model, $key) {
            return Html::a('',['create', 'id' => $key], ['title' => '编辑']);
        },
        'delete' => function($url, $model, $key) {
            return Html::a('',['delete', 'id' => $key], ['title' => '删除','data' => ['confirm' => '确定删除此文章吗?',]]);
        },
    ],
],

有时候删除的confirm验证会提示两次,可用下面的方法
'delete' => function($url, $model, $key) {
            return Html::a('',['delete', 'id' => $key], ['title' =>'删除','onclick' => 'if(!confirm("确定删除此评论吗?")){return false;}']);
},


时间

数据列的主要配置项是 yii\grid\DataColumn::format 属性。
它的值默认是使用 yiii18nFormatter 应用组件。

[
    ’label’=>’更新日期’,
    ’format’ => [’date’, ’php:Y-m-d’],
    ’value’ => ’updated_at’
],
//or
[
    //’attribute’ => ’created_at’,
    ’label’=>’更新时间’,
    ’value’=>function($model){
    return date(’Y-m-d H:i:s’,$model->created_at);
    },
    ’headerOptions’ => [’width’ => ’170’],
],


图片


[
    ’label’=>’封面图’,
    ’format’=>’raw’,
    ’value’=>function($m){
        return Html::img($m->cover,
            [’class’ => ’img-circle’,
            ’width’ => 30]
        );
    }
],



枚举值(男/女)

[
    ’attribute’ => ’sex’,
    ’value’=>function ($model,$key,$index,$column){
        return $model->sex==1?’男’:’女’;
    },
    //在搜索条件(过滤条件)中使用下拉框来搜索
    ’filter’ => [’1’=>’男’,’0’=>’女’],
    //or
    ’filter’ => Html::activeDropDownList($searchModel,
        ’sex’,[’1’=>’男’,’0’=>’女’],
        [’prompt’=>’全部’]
    )
],
[
    ’label’=>’产品状态’,
    ’attribute’ => ’pro_name’,
    ’value’ => function ($model) {
        $state = [
        ’0’ => ’未发货’,
        ’1’ => ’已发货’,
        ’9’ => ’退货,已处理’,
        ];
        return $state[$model->pro_name];
    },
    ’headerOptions’ => [’width’ => ’120’]
]

分享到:

评论

昵 称: