我与yii1
合作。
我有一个多页记录列表,使用CGridView
显示,以某种方式排序。
我有id
的记录。我想打开显示具有此确切ID的记录的页面。
粗略地说,链接/list?too=123
打开网格的第12页,在此页面的所有记录中都有一个id
123的条目。
最简单的方法是什么?
答案 0 :(得分:1)
您可以扩展CGridView并将自己的方法编写到搜索页面。
<强> MyGridView.php 强>
<?php
Yii::import('zii.widgets.grid.CGridView');
class MyGridView extends CGridView {
public function init()
{
if (!isset($_GET[$this->dataProvider->getPagination()->pageVar]) && isset($_GET['too']))
$this->searchPage();
parent::init();
}
public function searchPage(){
$baseCriteria=$this->dataProvider->getCriteria();
$criteria=clone $this->dataProvider->getCriteria();
if(($sort=$this->dataProvider->getSort())!==false)
{
// set model criteria so that CSort can use its table alias setting
if($baseCriteria!==null)
{
$c=clone $baseCriteria;
$c->mergeWith($criteria);
$this->dataProvider->model->setDbCriteria($c);
}
else
$this->dataProvider->model->setDbCriteria($criteria);
$sort->applyOrder($criteria);
}
$this->dataProvider->model->setDbCriteria($baseCriteria!==null ? clone $baseCriteria : null);
$data=$this->dataProvider->model->findAll($criteria);
$position = 0;
foreach($data as $model) {
$position++;
if ($model->uid == $_GET['too']) {
$curPage = ceil($position / $this->dataProvider->getPagination()->pageSize);
$_GET[$this->dataProvider->getPagination()->pageVar] = $curPage;
}
}
}}
答案 1 :(得分:0)
我这样做 -
$model->search()
传递给CGridView
时加载该页面。希望它有所帮助。