“显示”;第页=1“;Yii CLinkPager首页链接中的参数

“显示”;第页=1“;Yii CLinkPager首页链接中的参数,yii,Yii,我想创建一个能够记住搜索表单输入的CListView。我的应用程序将每个搜索输入(以及用户查看的当前页面)保存到用户会话中,并将搜索id添加到分页参数中 $pagination = array( 'pageVar' => 'page', 'currentPage' => $currentPage - 1, 'params' => array( 'search' => $searchId, ) ); 但是由于CLinkPager的

我想创建一个能够记住搜索表单输入的CListView。我的应用程序将每个搜索输入(以及用户查看的当前页面)保存到用户会话中,并将搜索id添加到分页参数中

$pagination = array(
   'pageVar' => 'page',
   'currentPage' => $currentPage - 1,
   'params' => array(
         'search' => $searchId,
   )
);
但是由于CLinkPager的第一个页面链接不显示“page=1”参数,每次我单击其他页面的链接(比如第2页),应用程序都会认为我需要当前的“search”(其当前页面值为2)

换言之,有没有办法让CLinkPager在第一个页面链接处显示参数“page=1”?或者你对处理这个问题还有什么建议:)

谢谢

已编辑

我的总体代码如下。如果您想给出更好的建议,请执行:)


您可能可以通过修改该方法进行扩展,并将
if($page>0)
条件删除/更改为始终为true。(或者更好的是,添加一个额外的参数来打开/关闭该行为。)

我正在考虑扩展CPagination。我在看是否有更好的办法。但我很高兴有人也这么想。谢谢。:)如果不编写自己的寻呼机,我不知道该如何实现,因为该逻辑在函数中是硬编码的。您可以提交一个功能请求,以便将来修改它的工作方式。扩展类非常简单,并且工作得非常好。:)
public function actionIndex() {

            $model = new User();
            if (isset($_POST['User'])) {
                    $model->setAttributes($_POST['User']);
            } else {
                    if (isset($_GET['search'])) {
                            $searchId = $_GET['search'];
                            //Just getting a variable stored in the session
                            //array(
                            //     $searchId => array(
                            //          'model' => $model //the search model
                            //          'pageSize' => $pageSize //current pagination page size
                            //          'currentPage' => $currentPage //the search model
                            //     )
                            //);
                            $search = Yii::app()->user->getSearch($searchId); 
                            $model->setAttributes($search['model'], false);
                            $currentPage = $search['currentPage'];
                            $pageSize = $search['pageSize'];
                    } else {
                            //create default search
                    }
            }

            //Managing pageSize parameter
            if (isset($_GET['pageSize'])) { //Check whether there is pageSize in $_GET parameters
                    if (in_array($_GET['pageSize'], $this->getPageSizes())) {
                            $pageSize = $_GET['pageSize'];
                    } else {
                            $pageSize = self::DEFAULT_SEARCH_PAGESIZE;
                    }
            } else if (!isset($pageSize)) { //Check whether pageSize is already defined before
                    $pageSize = self::DEFAULT_SEARCH_PAGESIZE;
            }
            //Managing currentPage parameter
            if (isset($_GET['page'])) { //Check whether there is page parameter in $_GET parameter 
                    $currentPage = $_GET['page'];
            } else if (!isset($currentPage)) { //Check whether page is already defined before
                    $currentPage = self::DEFAULT_CURRENT_PAGE;
            }

            //Saving all into new session
            $newSearch = array(
                    'model' => $model->getAttributes(),
                    'currentPage' => $currentPage,
                    'pageSize' => $pageSize,
            );
            //Check whether if there is a search before and if it exists check whether the two search is the same
            if (!isset($search) || (serialize($search) != serialize($newSearch))) {
                    //Saves into session
                    $searchId = Yii::app()->user->saveSearch($newSearch);
            } //else use the old search id

            //-----------------------------------------------------
            //Building the search
            //Setting criteria
            $criteria = new CDbCriteria(array(
                                    'select' => array(
                                            '*', //just to simplify things
                                    ),
                            ));


            //Appending criteria to search model used
            $criteria = $model->search($criteria);

            //Appending pagination to current variables
            $pagination = array(
                    'pageSize' => $pageSize,
                    'pageVar' => 'page',
                    'currentPage' => $currentPage - 1,
                    'params' => array(
                            'search' => $searchId, //include the search ID in the link pager request URL
                    )
            );

            //Creating dataProvider for the search
            $dataProvider = new CActiveDataProvider('Property', array(
                                    'criteria' => $criteria,
                                    'pagination' => $pagination,
                            ));
            //Rendering
            $this->render('index', array(
                    'dataProvider' => $dataProvider,
                    'pageSize' => $pageSize,
                    'model' => $model,
                    'searchId' => $searchId,
            ));
}