:

Yii2 的ListView显示数据

song100e 发布于:2016-4-22 14:27 分类:Yii2  有 1866 人浏览,获得评论 0 条 标签: ListView 

yii\widgets\ListView 小部件用于显示数据提供者 data provider 提供的数据。 每个数据模型用指定的视图文件 yii\widgets\ListView::$itemView 来渲染。 因为它提供开箱即用式的分页、排序以及过滤这样一些特性,所以它可以很方便地为最终用户显示信息并同时创建数据管理界面。

控制器:

<?php
namespace app\controllers;
use yii;
use yii\data\Pagination;
use app\models\Member;
use yii\data\ActiveDataProvider;

class CenterController extends BaseController
{
	public $layout = '//ucenter';
	
	/**
	 * 会员列表
	 * @return string
	 */
    public function actionIndex()
    {
    	$query = Member::find()->where(['status'=>'enable']);
		$dataProvider = new ActiveDataProvider([
    			'query' => $query,
    			'pagination' => [
    			'pageSize' => 20,
    		],
    	]);
    	return $this->render('index', [  
            'dataProvider' => $dataProvider  
        ]);
    }
}
?>

视图:

<?php
use yii\helpers\Html;
use yii\widgets\ListView;
echo ListView::widget([  
	'dataProvider' => $dataProvider,  
	'itemOptions' => [ 'tag'=>'ul', 'class' => 'item', 'style' => 'list-style:none;'],
	'itemView' => '_item',//子视图
	/*'itemView' => function ($model, $key, $index, $widget) {
		return Html::a(Html::encode($model->name), ['center/detail', 'id' => $model->id]);
	}*/
	'pager'=>[
		'maxButtonCount'=>20,
		'nextPageLabel'=>Yii::t('app','下一页'),
		'prevPageLabel'=>Yii::t('app','上一页'),
	],
]);  
?>

子视图:

<?php  
use yii\helpers\Html;  
use yii\helpers\HtmlPurifier;
?>
<li class="post" style="display:inline">
	ID:<?= Html::encode($model->id) ?></strong>
</li>  
<li class="post" style="display:inline;margin-left:10px;">
	用户名:<a href="/center/detail?id=<?= $model->id ?>" target="_blank">
		<?= HtmlPurifier::process($model->name)?>
	</a>
</li>
?>


赞助我,共同学习进步!