Yii的页面小部件

54 篇文章 2 订阅

区别

 DetailView 小部件能够用于显示一条记录数据

ListView 和 GridView 小部件能够用于显示一个拥有分页、 排序和过滤功能的一个列表或者表格

格式化

默认格式化时间

更多的格式化

自定义格式化

匿名函数格式化

图片展示

[
	'attribute' => 'image',
	'format'    => ['image',['width'=>'100','height'=>'100']],
	'value'     => function ($data) {
		            return $data->image;
	               }
],

链接

 [
   'attribute' => 'title',
   'value' => function ($model, $key, $index, $column) {
            return Html::a($model->title, 
                ['article/view', 'id' => $key]);
    },
   'format' => 'raw',
],

数据枚举

[
   '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'] 
]

代码展示

主要有一个数据提供者  一个过滤数据  一个表格部分(列数据/动作列)

GridView::widget([
// 你传过来的ActiveDataProvider
'dataProvider' => $dataProvider,
//过滤
'filterModel' => $searchModel,
//以下就是表格部分了
'columns' => [
    // 第一列:排序
    ['class' => 'yii\grid\SerialColumn'],
    // 第二列:sid,与你查询的model字段相对应,可以少,不可以多
    'sid',
    //第三列:姓名sname
    [
        'attribute' => 'sname',
        // 自定义列名
        'label'=>'姓名',
    ],

    // 更复杂的列数据
    [
        'class' => 'yii\grid\DataColumn', //由于是默认类型样式,可以省略
        //采用匿名函数方式 
        'value' => function ($data) {
            return $data->name; 
            // 如果是数组数据则为 $data['name'] ,例如,使用 SqlDataProvider 的情形。
         },
    ],


    // 动作列,默认三个动作,分别为{view},{update},{delete}
    [
        'class' => 'yii\grid\ActionColumn',
        // 列名
        'header' => '操作',
        // 定义这一列里面有几个操作,这里为查看,更新,删除
        'template' => '{stuent-view} {studnet-update} {student-delete}',
        // 为你template中声明的操作声明动作
        'buttons' => [
            // 对应{student-view},三个参数,最主要的$key,为你model主键的id
            'stuent-view' => function ($url, $models, $key) {
                // 为下面a链接的url,此处指向StudentController的actionView方法
                $url = ['student/view', 'id'=>$key];
                $options = [
                    'title' => '查看',
                    'aria-label' => '查看',
                    'data-pjax' => '0',
                ];
                return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, $options);
            }
        ]
    ],
],
]);

DetailView

定义

 

DetailView小部件通常用来显示的是一条记录的详情。

  • 一个Model模型类对象。
  • 一个AR类的实例对象。
  • 由键值对构成的一个关联数组。

一个典型的DetailView的使用方法如下:

 <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'id',
            'content:ntext',
            [
            'attribute'=>'status'
            'value'=>$model->status0->name
            ]
            'create_time:datetime',
            'update_time:datetime',
        ],
    ]) ?>

属性

代码

options格式:


    'options' => ['class' => 'table table-striped table-bordered detail-view']


template格式:


    'template' =>  '<tr><th{captionOptions}>{label}</th><td{contentOptions}>{value}</td></tr>'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值