yii中的cpagination和搜索问题

时间:2013-10-23 15:56:49

标签: php search yii pagination

这是Cpagination操作,当我进行搜索时有3个结果,例如它给了我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,
)) ?>

1 个答案:

答案 0 :(得分: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。也许你的分页代码也有错误。