Yii2之ListView小部件

  ListViewyii框架中相似GridView,也是用於展現多條數據的小部件,相比GridViewListView能夠更加靈活地設置數據展現的格式。php

下面以我本身作的一個使用ListView來展現數據的例子,來簡單講解一下ListView小部件的使用。html

       首先須要在控制器中new一個數據提供器,傳給視圖,示例代碼以下:yii2

public function actionIndex() {
	$dataProvider = new ActiveDataProvider([
		'query' => Diary::find()->orderBy('day'),
		'pagination' => [//分頁
			'pagesize' => 4
		]
	]);
	return $this->render('index', [
		'dataProvider' => $dataProvider
	]);
}

  接下來就是在視圖文件中使用ListView來展現數據了,示例代碼以下:框架

<?= 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' => '尾頁'
	]
]);?>

  這裏說明一下,因爲ListViewGridView繼承於同一個父類BaseListView,因此有不少設置參數是同樣的,能夠經過參考yii

GridView的參數設置來設置ListView,關於GridView小部件的使用能夠參考個人另外一篇博文——yii2之GridView小部件
ide

       最後就是在ListView'itemView'參數指定的視圖文件中來編寫每一條數據的展現格式了,示例代碼以下:佈局

<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>

  最後的最後,效果圖展現時間(略醜,勿怪):post

相關文章
相關標籤/搜索