这是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,
)) ?>
答案 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
。也许你的分页代码也有错误。