Yii2 GridView常见操作
日期格式化并实现日期可搜索
根据参数进行是否显示
链接可点击跳转
显示图片
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’]
]