Yii2之ListView小部件
ListView是yii框架中类似GridView,也是用于展示多条数据的小部件,相比GridView,ListView可以更加灵活地设置数据展示的格式。
下面以我自己做的一个使用ListView来展示数据的例子,来简单讲解一下ListView小部件的使用。
首先需要在控制器中new一个数据提供器,传给视图,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 | public function actionIndex() { $dataProvider = new ActiveDataProvider([ 'query' => Diary::find()->orderBy( 'day' ), 'pagination' => [ //分页 'pagesize' => 4 ] ]); return $this ->render( 'index' , [ 'dataProvider' => $dataProvider ]); } |
接下来就是在视图文件中使用ListView来展示数据了,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?= ListView::widget([ 'dataProvider' => $dataProvider , //数据提供器 'itemView' => '_diary' , //指定item视图(该视图文件与当前视图在同一个目录下) 'viewParams' => [ //传参数给每一个item 'moodCfg' => Mood::getAll() ], 'layout' => '{items}<div class="col-lg-12 sum-pager">{summary}{pager}</div>' , //整个ListView布局 'itemOptions' => [ //针对渲染的单个item 'tag' => 'div' , 'class' => 'col-lg-3' ], /* 'options' => [//针对整个ListView 'tag' => 'div', 'class' => 'col-lg-3' ], */ 'pager' => [ //'options' => ['class' => 'hidden'],//关闭分页(默认开启) /* 分页按钮设置 */ 'maxButtonCount' => 5, //最多显示几个分页按钮 'firstPageLabel' => '首页' , 'prevPageLabel' => '上一页' , 'nextPageLabel' => '下一页' , 'lastPageLabel' => '尾页' ] ]);?> |
这里说明一下,由于ListView和GridView继承于同一个父类BaseListView,所以有很多设置参数是一样的,可以通过参考
GridView的参数设置来设置ListView,关于GridView小部件的使用可以参考我的另一篇博文——yii2之GridView小部件。
最后就是在ListView的'itemView'参数指定的视图文件中来编写每一条数据的展示格式了,示例代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <div class = "item" > <h4 style= "font-weight:bold" ><?= Html::encode( $model ->title ? $model ->title : '(无题)' ) ?></h4> <p style= "font-size:13px" > <span style= "color:orangered" ><?= date ( 'Y.m.d' , $model ->day) ?></span><br> <span style= "color:#999" >心情:<?= $moodCfg [ $model ->mood] ?></span> //这里访问ListView的'viewParams'参数传过来的参数$moodCfg </p> <div style= "margin:15px 0" > <?php echo HtmlPurifier::process(mb_substr( $model ->content, 0, 25). '......' ); ?> </div> <p class = "info" > 添加:<?= date ( 'Y-m-d H:i:s' , $model ->created_at) ?><br> 最后修改:<?= date ( 'Y-m-d H:i:s' , $model ->updated_at) ?> </p> <div style= "text-align:right" > <?= Html::a( '<span class="glyphicon glyphicon-eye-open"></span>' , [ 'view' , 'id' => $model ->id], [ 'title' => '查看' ]) ?> <?= Html::a( '<span class="glyphicon glyphicon-pencil"></span>' , [ 'upcreate' , 'id' => $model ->id], [ 'title' => '修改' ]) ?> <?= Html::a( '<span class="glyphicon glyphicon-trash"></span>' , [ 'delete' , 'id' => $model ->id], [ 'title' => '删除' , 'data' => [ 'confirm' => '您确定真的要删除 ' . date ( 'Y年m月d日' , $model ->day). ' 的日记吗?' , 'method' => 'post' , ] ]) ?> </div> </div> |
最后的最后,效果图展示时间(略丑,勿怪):
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)