使用自定义HTML和CSS使用分页显示数据

时间:2014-01-24 21:06:53

标签: php yii

假设我有一个代表目录中产品的模型。该模型将内容提供商(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>

最好的方法是什么?到目前为止,我正在考虑以下内容:

  1. 使用CGridView,但不知何故使用参数自定义其输出。
  2. 创建一个类作为CGridView甚至CBaseListView的后代,并在其中加入格式化逻辑。
  3. 只需快速而肮脏的方式:简单地遍历项目并回显HTML。
  4. 或许我在这里遗漏了一些东西,还有更好的方法吗?

2 个答案:

答案 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方法。

相关问题