假设我有一个代表目录中产品的模型。该模型将内容提供商(CActiveDataProvider
)提供给视图,视图又使用它来显示网格(CGridView
)。
我需要的是一种显示此数据的自定义方式:自定义下一页/上一页链接,自定义数据显示。这些方面的东西:
<div class="pagination">
<a class="arrows prev fl" href="#"><span class="icon"></span>back</a>
<a class="arrows next fr" href="#">forward <span class="icon"></span></a>
</div>
<ul class="some class">
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
<li class="item"><a href="#"><img src="image.jpg" width="100" height="200"/></a></li>
</ul>
最好的方法是什么?到目前为止,我正在考虑以下内容:
CGridView
,但不知何故使用参数自定义其输出。CGridView
甚至CBaseListView
的后代,并在其中加入格式化逻辑。或许我在这里遗漏了一些东西,还有更好的方法吗?
答案 0 :(得分:1)
Bootstrap适用于显示表格数据。我使用Yii和Bootstrap生成我自己的数据显示,因为我不喜欢Yii的CGridView,即使它很方便。
您的控制器功能可能如下所示:
public function actionList($offset=0){
$model = new CatalogModel;
$data = $model->listCatalogsItems($offset);
$this->render('list',array(
'model'=>$data,
));
}
和你的模特一样
public function listCatalogItems($offset=0) {
$query = SELECT *
FROM catalog
WHERE <your conditions here> LIMIT 10 OFFSET " . $offset;
$items = Yii::app()->db->createCommand($query)
->queryAll();
return $items;
}
因此,使用您的下一页/上一页按钮,将OFFSET作为网址中的值传递,ex http://yoursite.com/site/action/2
希望这是有道理的。
答案 1 :(得分:0)
我最终创建了自己的类,将此数据显示为CWidget
类的后代。
所有逻辑都进入了run
方法。