0

这是 Cpagination 操作,当我进行具有 3 个结果的搜索时,例如它给了我 3 个页面,每个页面都有相同的 3 个三个结果,所以这里有什么问题:

 $criteria = new CDbCriteria();
            $models = Files::model();
            if (isset($_GET['file'])) {
                $q = $_GET['file'];
                $criteria->compare('fileName', $q, true, 'OR');
                $criteria->compare('tags', $q, true, 'OR');
                $count=Files::model()->count($criteria);
                $pages=new CPagination($count);

                // results per page
                $pages->pageSize=1;
               // $pages->applyLimit($criteria);

            }

            $dataProvider = new CActiveDataProvider("Files", array('criteria' => $criteria));
            $this->render('result', array(
                'dataProvider'=>$dataProvider,
                'pages'=>$pages,
                    ));

这是视图:

<?php


$this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider,
    'itemView' => '_view',
));
$this->widget('CLinkPager', array(
    'pages' => $pages,
)) ?>
4

1 回答 1

1

您正在代码中使用网格物体。此外,您的$pages->pageSize遗嘱仅在isset($_GET['file']). if语句只能用于添加条件参数。

您必须决定是否只使用Files::model()CActiveDataProvider("Files")。如果您将使用CActiveDataProvider

$criteria = new CDbCriteria();

if ( isset($_GET['file']) ) {
    $criteria->compare('fileName', $_GET['file'], true, 'OR');
    $criteria->compare('tags', $_GET['file'], true, 'OR');
}

$dataProvider = new CActiveDataProvider("Files", array(
    'criteria' => $criteria,
    'countCriteria' => $criteria,
    'pagination'=>array(
        // results per page
        'pageSize'=>1,
    ),
));

$this->render('result', array(
    'dataProvider' => $dataProvider,
    'pages' => $dataProvider->pagination,
));

另外,我看不到你的view。也许你那里也有一些错误的分页代码。

于 2013-10-23T16:58:59.300 回答